private function invokePost($parameters)
 {
     $response = array();
     $statusCode = 200;
     $this->success = false;
     // Submit the request and read response body
     try {
         $shouldRetry = true;
         $retries = 0;
         do {
             try {
                 $this->constructUserAgentHeader();
                 $httpCurlRequest = new HttpCurl($this->config);
                 $response = $httpCurlRequest->httpPost($this->mwsServiceUrl, $this->userAgent, $parameters);
                 // Split the API response into Response Body and the other parts of the response into other
                 list($other, $responseBody) = explode("\r\n\r\n", $response, 2);
                 $other = preg_split("/\r\n|\n|\r/", $other);
                 list($protocol, $code, $text) = explode(' ', trim(array_shift($other)), 3);
                 $response = array('Status' => (int) $code, 'ResponseBody' => $responseBody);
                 $statusCode = $response['Status'];
                 if ($statusCode == 200) {
                     $shouldRetry = false;
                     $this->success = true;
                 } elseif ($statusCode == 500 || $statusCode == 503) {
                     $shouldRetry = true;
                     if ($shouldRetry && strtolower($this->config->isHandleThrottle())) {
                         $this->pauseOnRetry(++$retries, $statusCode);
                     }
                 } else {
                     $shouldRetry = false;
                 }
             } catch (\Exception $e) {
                 throw $e;
             }
         } while ($shouldRetry);
     } catch (\Exception $se) {
         throw $se;
     }
     return $response;
 }