@Override
    public T handleResponse(HttpResponse response) throws IOException {
      int statusCode = response.getStatusLine().getStatusCode();
      if (!myBuilder.mySuccessChecker.test(statusCode)) {
        if (myBuilder.myIgnoreChecker.test(statusCode)) {
          return myFallbackValue.produce();
        }
        if (myBuilder.myErrorExtractor != null) {
          RequestFailedException exception = myBuilder.myErrorExtractor.apply(response);
          if (exception != null) {
            throw exception;
          }
        }
        throw RequestFailedException.forStatusCode(statusCode, messageForStatusCode(statusCode));
      }
      try {
        if (LOG.isDebugEnabled()) {
          String content = getResponseContentAsString(response);
          TaskUtil.prettyFormatJsonToLog(LOG, content);
          return myFromString.apply(content);
        }
        else {
          return myFromReader.apply(getResponseContentAsReader(response));
        }
      }
      catch (JsonSyntaxException e) {
        LOG.warn("Malformed server response", e);
        return myFallbackValue.produce();
      }
    }
@Override
    public T handleResponse(HttpResponse response)