There is a question I'm often asking myself in regards to coroutines: Are we missing out on true asynchronicity because the libraries we use are using threads anyway? In the .NET world (AFAIK) there are truly async functions for IO like reading from the network where there are
no threads (
https://blog.stephencleary.com/2013/11/there-is-no-thread.html). In the Java world, noone seems to be using NIO which (AFAIK) is exploting real OS level asynchronicity.