Asynchronous operations are getting more and more popular. To the point that there exist multiple frameworks and environments revolving strictly around that concept. Boost.ASIO, Twisted and node.js are notable example. Exploring that area is not in scope. Focus is on techniques for making asynchronous more readable. Different currently used solutions will be presented. Coroutines will be presented and explained. Integration of these with asynchronous code will be explored and what are benefits from using coroutines in asynchronous code.