/**
  * @param Request $Request
  * @throws \Productsup\Exceptions\ServerException
  * @return Response
  */
 public function executeRequest(Request $Request)
 {
     if ($this->verbose) {
         $Request->allowCompression = false;
         // disable gzip for easier debugging
         $Request->verboseOutput();
     }
     $this->prepareRequest($Request);
     if (!($curl_response = curl_exec($this->curl))) {
         throw new ServerException(curl_error($this->curl), curl_errno($this->curl));
     }
     list($responseHeaders, $responseBody) = $this->parseHttpResponse($curl_response);
     $statusCode = curl_getinfo($this->curl, CURLINFO_HTTP_CODE);
     $responseObject = new Response($statusCode, $responseHeaders, $responseBody);
     if ($this->verbose) {
         $responseObject->verboseOutput();
     }
     return $responseObject;
 }