@Override
  public ListenableFuture<HttpResponse> sendAsync(HttpRequest httpRequest) {
    return sendAsync(httpRequest, null);
  }
@Test
  public void sendAsync_whenHeadRequest_returnsHttpResponseWithoutBody()
      throws IOException, ExecutionException, InterruptedException {
    String responseBody = "test response";
    mockWebServer.enqueue(
        new MockResponse()
            .setResponseCode(HttpStatus.OK.code())
            .setHeader(CONTENT_TYPE, MediaType.PLAIN_TEXT_UTF_8.toString())
            .setBody(responseBody));
    mockWebServer.start();

    String requestUrl = mockWebServer.url("/test/head").toString();

    HttpResponse response = httpClient.sendAsync(head(requestUrl).withEmptyHeaders().build()).get();

    assertThat(response)
        .isEqualTo(
            HttpResponse.builder()
                .setStatus(HttpStatus.OK)
                .setHeaders(
                    HttpHeaders.builder()
                        .addHeader(CONTENT_TYPE, MediaType.PLAIN_TEXT_UTF_8.toString())
                        // MockWebServer always adds this response header.
                        .addHeader(CONTENT_LENGTH, String.valueOf(responseBody.length()))
                        .build())
                .setBodyBytes(Optional.empty())
                .setResponseUrl(HttpUrl.parse(requestUrl))
                .build());
  }