code: public <RESP extends J4pResponse<REQ>, REQ extends J4pRequest> RESP execute(REQ pRequest,String pMethod,
                                                                       Map<J4pQueryParameter,String> pProcessingOptions,
                                                                       J4pResponseExtractor pExtractor)
              throws J4pException {
  
          try {
              HttpResponse response = httpClient.execute(requestHandler.getHttpRequest(pRequest,pMethod,pProcessingOptions));
              JSONAware jsonResponse = extractJsonResponse(pRequest,response);
              if (! (jsonResponse instanceof JSONObject)) {
                  throw new J4pException("Invalid JSON answer for a single request (expected a map but got a " + jsonResponse.getClass() + ")");
              }
              return pExtractor.extract(pRequest, (JSONObject) jsonResponse);
          }
          catch (IOException e) {
              throw mapException(e);
          } catch (URISyntaxException e) {
              throw mapException(e);
          }
      }
docs: Execute a single J4pRequest which returns a single response.
  
  @param pRequest request to execute
  @param pMethod method to use which should be either "GET" or "POST"
  @param pProcessingOptions optional map of processing options
  @param pExtractor extractor for actually creating the response
  
  @param <RESP> response type
  @param <REQ> request type
  @return response object
  @throws J4pException if something's wrong (e.g. connection failed or read timeout)