code: public HttpRequest buffer() {
          final HttpHeaders bufferedHeaders = new HttpHeaders(headers);
          return new HttpRequest(httpMethod, url, bufferedHeaders, body);
      }
docs: Creates a clone of the request.
  
  The main purpose of this is so that this HttpRequest can be changed and the resulting
  HttpRequest can be a backup. This means that the buffered HttpHeaders and body must
  not be able to change from side effects of this HttpRequest.
  
  @return a new HTTP request instance with cloned instances of all mutable properties.