docs: public T handle(final HttpRequest request, final HttpResponse response)
          throws IOException
      {
          // Find the response stream - the error stream may be valid in cases
          // where the input stream is not.
          InputStream is = null;
          try {
              final HttpEntity httpEntity = response.getEntity();
              if (httpEntity != null) {
                  is = httpEntity.getContent();
                      }
          }
          catch (IOException e) {
              log.warn("Could not locate response body stream", e);
              // normal for 401, 403 and 404 responses, for example...
          }
  
          if (is == null) {
              // Fall back to zero length response.
              is = new NullInputStream(0);
          }
  
          final Header header = response.getFirstHeader("Content-Encoding");
          if (header != null) {
              final String encoding = StringUtils.trimToEmpty(header.getValue());
  
              if (StringUtils.equalsIgnoreCase(encoding, "gzip") || StringUtils.equalsIgnoreCase(encoding, "x-gzip")) {
                  log.debug("Found GZIP stream");
                  is = new GZIPInputStream(is);
              }
              else if (StringUtils.equalsIgnoreCase(encoding, "deflate")) {
                  log.debug("Found deflate stream");
                  final Inflater inflater = new Inflater(true);
                  is = new InflaterInputStream(is, inflater);
              }
          }
          return contentConverter.convert(request, response, is);
      }