in ktor-io/jvm/src/io/ktor/utils/io/ByteBufferChannel.kt [617:629]
override suspend fun readAvailable(dst: ByteBuffer): Int {
val consumed = readAsMuchAsPossible(dst)
if (consumed == 0 && closed != null) {
if (state.capacity.flush()) {
return readAsMuchAsPossible(dst)
} else {
return -1
}
} else if (consumed > 0 || !dst.hasRemaining()) return consumed
return readAvailableSuspend(dst)
}