@CsvSource({ "H1", "H2", "HTTPS" })
    @ParameterizedTest
    void testProxy_sessionTimeout(SessionProtocol protocol) {
        try (ClientFactory clientFactory =
                     ClientFactory.builder()
                                  .proxyConfig(ProxyConfig.socks4(socksProxyServer.address()))
                                  .connectTimeoutMillis(1000)
                                  .tlsNoVerify()
                                  .build()) {

            final WebClient webClient = WebClient.builder(slowBackendServer.uri(protocol))
                                                 .factory(clientFactory)
                                                 .decorator(LoggingClient.newDecorator())
                                                 .build();
            final CompletableFuture<AggregatedHttpResponse> responseFuture =
                    webClient.get(PROXY_PATH).aggregate();
            assertThatThrownBy(responseFuture::join).isInstanceOf(CompletionException.class)
                                                    .hasCauseInstanceOf(UnprocessedRequestException.class)
                                                    .hasRootCauseInstanceOf(
                                                            SessionProtocolNegotiationException.class);
        }
    }
Tests if a request is failed with {@link SessionProtocolNegotiationException} if a session negotiation
with the backend server takes longer than a connection timeout.

<p>Cleartext protocol are not used because the session could immediately complete when a connection is
established with the proxy server.
core/src/test/java/com/linecorp/armeria/client/proxy/ProxyClientIntegrationTest.java