Introduction to writing asynchronous, non-blocking code with kotlin coroutines
https://github.com/olbpetersson/coolroutines