Hi Canato, It’s a great article.
Only one observation: When you say inside Resume that async with await for result blocks parent thread, it is more exactly say that it suspends coroutine (but doesn’t blocks parent thread), actually parent thread is free meanwhile to execute other tasks.
await is a suspend function and in a suspend function thread is never block but coroutine does suspend
When coroutine resumes because both awaits finish, then the parent thread (or another rfom the same Dispatcher’s pool) continues executing (not strictly is the same thread).
You can see an example here. where the parent thread that executes await on async tasks is thread [DefaultDispatcher-worker-1]:
https://gist.github.com/alfgarsan/412cec6503acc286633e276c28cf2ecd