@Override
    public void asyncResponseHandler(AsyncResponseHandler<Req, Resp> handler) {
        this.channel.newAgent((agent, message) -> {
            UUID id = message.getConversationId();
            Req req = message.getBody();

            Promise<Resp> promise = handler.response(req);
            if (promise != null) {
                Promise<ReqResMessage<Resp>> composedPromise = promise.thenApplyAsync(resp -> resp == null ? null : new ReqResMessage<>(id, resp));
                return ConversationReply.ofPromise(composedPromise);
            } else {
                return ConversationReply.noReply();
            }
        });
    }
Implements a {@link ReqRespChannel} using {@link ConversationChannel}s.

@param <Req> the request type
@param <Resp> the response type
helper/src/main/java/me/lucko/helper/messaging/reqresp/SimpleReqRespChannel.java