Just a small example of how Kotlin coroutines are great
osha1
501

Sadly, the coroutine code we see in the video uses all kinds of antipatterns, like launching in one context only to immediately switch to a different one, and switching using async-await instead of withContext. The result is quite messy code with needless nesting and self-cancelling composition of constructs.