@Test
    void timeoutFor100Continue() throws Exception {
        try (ServerSocket ss = new ServerSocket(0)) {
            final int port = ss.getLocalPort();
            final WebClient client = WebClient.builder("h1c://127.0.0.1:" + port)
                                              .responseTimeoutMillis(500)
                                              .build();
            final CompletableFuture<AggregatedHttpResponse> future =
                    client.prepare()
                          .post("/")
                          .content("foo\n")
                          .header(HttpHeaderNames.EXPECT, HttpHeaderValues.CONTINUE)
                          .execute()
                          .aggregate();

            try (Socket s = ss.accept()) {
                final InputStream inputStream = s.getInputStream();
                final BufferedReader in = new BufferedReader(
                        new InputStreamReader(inputStream, StandardCharsets.US_ASCII));
                assertThat(in.readLine()).isEqualTo("POST / HTTP/1.1");
                assertThat(in.readLine()).startsWith("host: 127.0.0.1:");
                assertThat(in.readLine()).isEqualTo("content-type: text/plain; charset=utf-8");
                assertThat(in.readLine()).isEqualTo("expect: 100-continue");
                assertThat(in.readLine()).isEqualTo("content-length: 4");
                assertThat(in.readLine()).startsWith("user-agent: armeria/");
                assertThat(in.readLine()).isEmpty();

                // Do not send response so that the client will time out.

                await().atMost(Duration.ofSeconds(2)).untilAsserted(() -> {
                    assertThatThrownBy(future::join).hasCauseInstanceOf(ResponseTimeoutException.class);
                });
            }
        }
    }
This test is to check the behavior of the HttpClient when the 'Expect: 100-continue' header is set.
core/src/test/java/com/linecorp/armeria/client/HttpClientExpect100HeaderTest.java