The problem of “waiting forever” in the case of @uhe example of is called “communication deadlock”. It is not directly related to coroutines. It can happen with any channel-based communication abstraction, like distributed apps. It is not a big problem in practice if you follow established patterns on structuring your communication pipelines