Асинхронное программирование и сопрограммы

Как показывает практика, повсеместное применение классического, основанного на callback’ах подхода к асинхронному программированию обычно оказывается неудобным. Для упрощения написания и поддержки сложного асинхронного кода можно использовать иной подход — с использованием сопрограмм. Он значительно сокращает объём и сложность кода, а также существенно упрощает реализацию нетривиальных сценариев, связанных с отменой вычислений и таймаутами операций.