/**
  * Perform the requests.
  */
 public function performRequests()
 {
     // Are there requests to perform?
     if (empty($this->requests)) {
         return;
     }
     // Add the handles.
     foreach ($this->requests as $request) {
         if (!$request->fromCache) {
             curl_multi_add_handle($this->handler, $request->curl);
         }
     }
     // Perform the requests.
     $running = null;
     do {
         curl_multi_exec($this->handler, $running);
     } while ($running);
     // Close handlers
     foreach ($this->requests as $request) {
         if (!$request->fromCache) {
             curl_multi_remove_handle($this->handler, $request->curl);
         }
     }
     // Loop through requests, process curl data.
     foreach ($this->requests as $request) {
         // Skip cached items
         if ($request->fromCache) {
             continue;
         }
         $result = curl_multi_getcontent($request->curl);
         $info = curl_getinfo($request->curl);
         $errorMessage = curl_error($request->curl);
         $errorNumber = curl_errno($request->curl);
         $request->response = new Response($result, $info, $errorMessage, $errorNumber);
         $log = "[Code: {$request->response->httpCode}] [Async] {$request->method} {$request->baseUrl}";
         // Is the response body an array?
         if (is_array($request->response->body)) {
             // Are there 50 items?
             $numItems = count($request->response->body);
             if (50 == $numItems) {
                 // Add or bump 'page' parameter.
                 $request->args['page'] = isset($request->args['page']) ? $request->args['page'] + 1 : 2;
                 // Perform a do ... while loop, creating subsequent page requests so long as
                 // the page isn't empty.
                 do {
                     // Make a new request.
                     $newRequest = new Request($request->baseUrl, $request->args, $request->method);
                     $newRequest->performRequest();
                     $request->args['page']++;
                     $numItems = count($newRequest->response->body);
                     // If there are items in the new request, then we want to merge them into
                     // the main body.
                     if ($numItems > 0) {
                         $request->response->body = array_merge($request->response->body, $newRequest->response->body);
                     }
                 } while ($numItems != 0 && $numItems == 50);
             }
         }
         Logger::append($log);
     }
     // Close multi curl.
     curl_multi_close($this->handler);
 }