Kotlin coroutines: new ways to do asynchronous programming

The async/await feature allows you to write the asynchronous code in a straightforward way, without a long list of callbacks. Used in C# for quite a while already, it has proven to be extremely useful. In Kotlin you have async and await as library functions implemented using coroutines.

A coroutine is a light-weight thread that can be suspended and resumed later. Very precise definition, but might be confusing at first. What 'light-weight thread' means? How does suspension work? This talk uncovers the magic.
We'll discuss the concept of coroutines, the power of async/await, and how you can benefit from defining your asynchronous computations using suspend functions.