Там была такая логика.
Скрипту на вход приходят куча ссылок файлы на AWS s3, и ссылка на s3 куда надо положить готовый итоговый файл.
Вот один контекстный занимается тем, что скачивает один файл в локаль и возвращает из себя путь до локального файла.
Второй контекст создаёт временный файл и когда закрывается контекст, закачивает его в переданный путь на s3.
Есть ещё контексты по предварительной подготовке файлов.
И вот так открыв кучку контекстов, выполняем мёрдж файлов и кладём в путь, который передан во втором контексте. И всё. Остальное контексты делают сами. Оч удобно и наглядно вышло