public CompletableFuture<Response> executeRequest(Request request) {
        return executeRequest(request, () -> new AsyncCompletionHandlerBase());
    }
@Test
    void testMaxConnections() throws ExecutionException, InterruptedException {
        server.stubFor(post(urlEqualTo("/concurrency-test"))
                .willReturn(aResponse()
                        .withTransformers("concurrency-test")));

        ClientConfigurationData conf = new ClientConfigurationData();
        int maxConnections = 10;
        conf.setConnectionsPerBroker(maxConnections);
        conf.setServiceUrl("http://localhost:" + server.port());

        @Cleanup
        AsyncHttpConnector connector = new AsyncHttpConnector(5000, 5000,
                5000, 0, conf, false);

        Request request = new RequestBuilder("POST")
                .setUrl("http://localhost:" + server.port() + "/concurrency-test")
                .build();

        List<CompletableFuture<Response>> futures = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            futures.add(connector.executeRequest(request));
        }
        FutureUtil.waitForAll(futures).get();
        int maxConcurrency = concurrencyTestTransformer.getMaxConcurrency();
        assertTrue(maxConcurrency > maxConnections / 2 && maxConcurrency <= maxConnections,
                "concurrency didn't get limited as expected (max: " + maxConcurrency + ")");
    }