diff --git a/httprl.module b/httprl.module
index 7a86970..90927ba 100644
--- a/httprl.module
+++ b/httprl.module
@@ -150,13 +150,19 @@ function httprl_request($url, $options = array()) {
   if (empty($uri)) {
     $result->error = 'unable to parse URL';
     $result->code = -1001;
-    return $result;
+
+    // Add in failed request to the output.
+    // Exit if the URL passed in is bad.
+    return httprl_send_request(FALSE, $url, $result, $options);
   }
 
   if (!isset($uri['scheme'])) {
     $result->error = 'missing schema';
     $result->code = -1002;
-    return $result;
+
+    // Add in failed request to the output.
+    // Exit if no scheme was passed in.
+    return httprl_send_request(FALSE, $url, $result, $options);
   }
 
   // Merge the default options.
@@ -202,7 +208,10 @@ function httprl_request($url, $options = array()) {
     default:
       $result->error = 'invalid schema ' . $uri['scheme'];
       $result->code = -1003;
-      return $result;
+
+      // Add in failed request to the output.
+      // Exit if an invalid scheme was passed in.
+      return httprl_send_request(FALSE, $url, $result, $options);
   }
 
   $flags = STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT;
@@ -245,8 +254,9 @@ function httprl_request($url, $options = array()) {
       $result->error = trim($errstr) ? trim($errstr) : t('Error opening socket @socket', array('@socket' => $socket));
     }
 
+    // Add in failed request to the output.
     // Exit if a stream was not created.
-    return $result;
+    return httprl_send_request(FALSE, $url, $result, $options);
   }
 
   // Set the stream to be non blocking.
@@ -330,9 +340,7 @@ function httprl_send_request($fp = NULL, $url = '', $request = '', $options = ''
   static $stream_write_count = 0;
 
   // If given a file pointer, store data in a static and exit.
-  if (!empty($fp)) {
-    $streams[$counter] = $fp;
-    $timeout = max($options['timeout'], $timeout);
+  if (!is_null($fp)) {
     $result = new stdClass();
     $result->url = $url;
     $result->request = $request;
@@ -341,9 +349,21 @@ function httprl_send_request($fp = NULL, $url = '', $request = '', $options = ''
     $result->options = $options;
     $result->chunk_size = 1024;
     $responses[$counter] = $result;
-    $counter++;
-    $stream_write_count++;
-    return TRUE;
+
+    // If file pointer is not empty add it to the connection pool.
+    if (!empty($fp)) {
+      $streams[$counter] = $fp;
+      $timeout = max($options['timeout'], $timeout);
+      $stream_write_count++;
+      $counter++;
+      return TRUE;
+    }
+    // Connection was never made.
+    else {
+      $result->status = 'Connection not made.';
+      $counter++;
+      return FALSE;
+    }
   }
 
   // Exit if there is nothing to do.
