Chapter 4 - Recipe #10: Separating the launching of tasks and the processing of their results in an executor