In theory, coroutines should provide it “for free”...
# ktor
o
In theory, coroutines should provide it “for free”, because if bytes cannot be sent to outbound channel, the whole computation should just be suspending. But it’s easily defeated by sync nature of many APIs that we have. E.g. OutputStream is sync and blocking, so even if underlying engine can suspend all the computation, there is no way to communicate this to the code that is writing data. So it has to be blocked, which defeats the purpose.