public static <TRequest, TResponse> Flux<TResponse> oneToMany(
Mono<TRequest> rxRequest,
BiConsumer<TRequest, StreamObserver<TResponse>> delegate) {
try {
ReactorConsumerStreamObserver<TRequest, TResponse> consumerStreamObserver = new ReactorConsumerStreamObserver<>();
rxRequest.subscribe(request -> delegate.accept(request, consumerStreamObserver));
return ((Flux<TResponse>) consumerStreamObserver.getRxConsumer())
.transform(Operators.lift(new SubscribeOnlyOnceLifter<TResponse>()));
} catch (Throwable throwable) {
return Flux.error(throwable);
}
}