Комманда - это громоздко. Конвеер Потапенко - более изящное решение.
(хотя при первом знакомстве может вынести мозг - главное не испугаться и понять что все просто

)
Там суть в том. что в список добавляются произвольные функции и выполняются по порядку. Если какая-то функция выполняет асинхронное дествие - она останавливает конвеер, а колбек о завершении действия его запускает. Таким образом этот колбек _не_ обязан знать о том, кто идет за ним.
Решение, конечно, имеет ограниченные применения из-за сложности обработки вариантов, отклоняющихся от заданного сценария. Оно же как работает - забили функции - запустили - выполняется. А как быть если нужно на ходу что-то изменить - поди придумай. Новые то функции добавлять можно, но какую выработать стратегию их добавления - не понятно. Проще на события напрямую понаподписываться (если нужно непоследовательное выполнение).
Я использовал в загрузчиках игр - там много действий которые сложно расставить в правильном порядке. Конвеер помогает не потерять общую последовательность.