@Override
        public void execute(
                final AsyncClientExchangeHandler exchangeHandler,
                final HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
                final HttpContext context) {
            Asserts.check(!released.get(), "Endpoint has already been released");

            final HttpClientContext clientContext = HttpClientContext.castOrCreate(context);
            final String exchangeId = ExecSupport.getNextExchangeId();
            clientContext.setExchangeId(exchangeId);
            if (LOG.isDebugEnabled()) {
                LOG.debug("{} executing message exchange {}", exchangeId, ConnPoolSupport.getId(connectionEndpoint));
                connectionEndpoint.execute(
                        exchangeId,
                        new LoggingAsyncClientExchangeHandler(LOG, exchangeId, exchangeHandler),
                        pushHandlerFactory,
                        clientContext);
            } else {
                connectionEndpoint.execute(exchangeId, exchangeHandler, clientContext);
            }
        }
Minimal implementation of {@link CloseableHttpAsyncClient}. This client is
optimized for HTTP/1.1 and HTTP/2 message transport and does not support
advanced HTTP protocol functionality such as request execution via a proxy,
state management, authentication and request redirects.
<p>
Concurrent message exchanges executed by this client will get assigned to
separate connections leased from the connection pool.
</p>

@since 5.0
httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttpAsyncClient.java