@ParameterizedTest
    @EnumSource(value = SessionProtocol.class, names = {"H1C", "H2C"})
    void responseCompleteNormallyIfRequestIsAborted(SessionProtocol protocol) throws Exception {
        final WebClient client = WebClient.of(server.uri(protocol));
        final HttpRequestWriter request = HttpRequest.streaming(RequestHeaders.of(HttpMethod.POST, "/"));
        final AggregatedHttpResponse res = client.execute(request).aggregate().join();
        assertThat(res.contentUtf8()).isEqualTo("Hello, Armeria!");
        // The stream is aborted with ResponseCompleteException
        // in HttpResponseDecoder.close(...) after the client receives the response.
        request.whenComplete().handle((unused, cause) -> {
            assertThat(cause).isExactlyInstanceOf(ResponseCompleteException.class);
            return null;
        }).join();
    }
This test would be passed because the {@code cancelAction} method of the
{@link HttpResponseWrapper} is invoked in the event loop of the {@link Channel}.
core/src/test/java/com/linecorp/armeria/client/HttpResponseDecoderTest.java