@Dexter coroutines can not magically turn blocking into suspension. They can be used to turn callbacks into suspension. I.e. with the coroutines.nio package you get calls like aread and awrite. You use aread inside a coroutine just like you would use a blocking read but it will suspend instead of block until the read completes.