@uli There is no other way. NIO async channels do not support "clean cancellation" with predictable outcome. Moreover, it should not do any harm, since an I/O byte channel is not supposed to be used concurrently from multiple coroutines anyway. There is always just one owner, typically some kind of backround connection-handling coroutine (actor).