```val responseFlow = callbackFlow<RespT> { ...
# coroutines
m
Copy code
val responseFlow = callbackFlow<RespT> {
    callbackHandler(channel)
    channel.close()
}.buffer(Channel.RENDEZVOUS).onEach { message ->
    // ...
}

launch(start = CoroutineStart.ATOMIC) {
    try {
        responseFlow.collect()
        serverCallObserver.onCompleted()
    }catch (e: Throwable){
        serverCallObserver.completeSafely(e)
    }
}