/**
  * Executes multi curl requests and return response. Response is returned in an array and
  * result array contains responses in same order in what requests were added. Response array format is
  * array(array(self::SRV_CODE => 'http_response_code', self::SRV_RESPONSE => 'response',
  * 	self::SRV_ERROR_CODE => 'any error code', self::SRV_ERROR => 'any error string'), ...)
  *
  * @param int $_maxConcurrent Executes this numbers of requests in parallel
  * @author Atul Atri
  * @return array e.g array()
  */
 public function ExecuteMultiCurl($_maxConcurrent = 10, $_isRetry = false)
 {
     $_multiCurlResponseArr = parent::ExecuteMultiCurl($_maxConcurrent);
     $_isAll401 = true;
     foreach ($_multiCurlResponseArr as $_nextResponse) {
         if ($_nextResponse[self::SRV_CODE] != 401) {
             $_isAll401 = false;
             break;
         }
     }
     if (!$_isRetry && $_isAll401) {
         $this->_reqRetryCount = 0;
     }
     if ($_isAll401 == 401 && $this->_reqRetryCount < $this->_maxSendReqRetries) {
         $this->_CurlCurrentIndex = 0;
         //most probably token expired...ask oauth lib to regenerate token
         $_refreshed = SWIFT_APIOauth2::RefreshToken();
         if ($_refreshed) {
             $this->_reqRetryCount++;
             $this->ModifyAuthHeader();
             return $this->ExecuteMultiCurl($_maxConcurrent, true);
         }
     }
     return $_multiCurlResponseArr;
 }