Ну, да, где обычный код будет уходить в собаку асинхронный будет "зависать на шаге".
По-моему, второе гораздо лучше, т.к. вручную вызвать собаку всегда можно, а вот понять "а где же код зациклился" после собаки уже никак.
Ась? Как раз coroutine это и есть одно слово и ровно обозначающее то, о чём я говорю.
Семечки уж точно мимо кассы.Сопрограмма (англ. coroutine) — компонент программы, обобщающий понятие подпрограммы, который дополнительно поддерживает множество входных точек (а не одну, как подпрограмма), остановку и продолжение выполнения с сохранением определённого положения.