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