Index: wp-includes/class-http.php
===================================================================
--- wp-includes/class-http.php	(revision 21088)
+++ wp-includes/class-http.php	(working copy)
@@ -1022,6 +1022,18 @@
 	private $headers = '';
 
 	/**
+	 * Curl multi resource handle
+	 * @var mixed
+	 */
+	public $curl_multi = null;
+	
+	/**
+	 * List of curl handles
+	 * @var array
+	 */
+	private $curl_handles = array();
+
+	/**
 	 * Send a HTTP request to a URI using cURL extension.
 	 *
 	 * @access public
@@ -1146,8 +1158,11 @@
 
 		// We don't need to return the body, so don't. Just execute request and return.
 		if ( ! $r['blocking'] ) {
-			curl_exec( $handle );
-			curl_close( $handle );
+			$this->curl_handles[] = $handle;
+			$this->curl_multi = curl_multi_init();
+			curl_multi_add_handle( $this->curl_multi, $handle );
+			curl_multi_exec( $this->curl_multi, $active );
+			add_action( 'shutdown', array( $this, 'close_connections' ) );
 			return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
 		}
 
@@ -1228,6 +1243,24 @@
 
 		return apply_filters( 'use_curl_transport', true, $args );
 	}
+	
+	/**
+	 * Wait for any multi-requests to finish or time out and close the connection
+	 */
+	public function close_connections() {
+		$mrc = $active = null;
+
+		// Make sure all of the requests have finished
+		// but don't listen for a response
+		do {
+			$mrc = curl_multi_exec( $this->curl_multi, $active );
+		} while ( $active && $mrc == CURLM_CALL_MULTI_PERFORM );
+
+		// Close all handles, and the multi handle
+		foreach ( $this->curl_handles as $handle )
+			curl_multi_remove_handle( $this->curl_multi, $handle );	
+		curl_multi_close( $this->curl_multi );
+	}
 }
 
 /**
