public final <T> Future<T> execute(
            final String id,
            final AsyncRequestProducer requestProducer,
            final AsyncResponseConsumer<T> responseConsumer,
            final FutureCallback<T> callback) {
        return execute(id, requestProducer, responseConsumer, null, null, callback);
    }
Initiates message exchange using the given request producer and response consumer.

@param id unique operation ID or {@code null}.
@param requestProducer the request producer.
@param responseConsumer the response consumer.
@param callback the result callback.
@param <T> the result representation.
@return the result future.
httpclient5/src/main/java/org/apache/hc/client5/http/nio/AsyncConnectionEndpoint.java