Разберем Coroutines в Kotlin: какую проблему решают, какие основные компоненты содержат. Обсудим, что представляет из себя Structured Concurrency и в каких случаях его можно (или нужно) сломать. Также поговорим о различных нюансах, которые могут возникнуть при запуске, отмене и обработке ошибок.