docs: private void sendAndReceiveImpl(HttpMessage message, HttpRequestConfig requestConfig) throws IOException {
          if (log.isDebugEnabled()) {
              log.debug("Sending " + message.getRequestHeader().getMethod() + " " + message.getRequestHeader().getURI());
          }
          message.setTimeSentMillis(System.currentTimeMillis());
  
          try {
              if (requestConfig.isNotifyListeners()) {
                  notifyRequestListeners(message);
              }
  
              HttpMethodParams params = null;
              if (requestConfig.getSoTimeout() != HttpRequestConfig.NO_VALUE_SET) {
                  params = new HttpMethodParams();
                  params.setSoTimeout(requestConfig.getSoTimeout());
              }
              sendAuthenticated(message, false, params);
  
          } finally {
              message.setTimeElapsedMillis((int) (System.currentTimeMillis() - message.getTimeSentMillis()));
  
              if (log.isDebugEnabled()) {
                  log.debug(
                          "Received response after " + message.getTimeElapsedMillis() + "ms for "
                                  + message.getRequestHeader().getMethod() + " " + message.getRequestHeader().getURI());
              }
  
              if (requestConfig.isNotifyListeners()) {
                  notifyResponseListeners(message);
              }
          }
      }