Вам, наверное, интересно, зачем нужен второй этап — асинхронное составление результата? Разве уменьшения времени ожидания ответа путем использования параллельного выполнения недостаточно? Вспомним, что наша цель — ограничить время ожидания в системе вложенных взаимоотношений между пользователем и сервисами, где каждый новый уровень использует сервис, находящийся уровнем ниже. Поскольку параллельное выполнение подзадач A, B и C зависит от возвращения вызвавшими их методами объектов Future вместо реальных результатов, это применимо и ко всей задаче в целом