Designing with coroutines
Android developers have been dealing with async tasks, threads, executors, Rx programming only to accomplish one thing: Do not block the UI Thread but at what cost? Horrible designs, hard to maintain and full of race conditions, deadlock and other concurrency problems.
With coroutines, we can design for safety, scalability, and performance.