Index: wp-includes/class-http.php
===================================================================
--- wp-includes/class-http.php	(revision 25918)
+++ wp-includes/class-http.php	(working copy)
@@ -1231,18 +1243,20 @@
 
 		// We don't need to return the body, so don't. Just execute request and return.
 		if ( ! $r['blocking'] ) {
-			curl_exec( $handle );
+			$this->curl_handles[] = $handle;
+			$this->curl_multi = curl_multi_init();
 
-			if ( $curl_error = curl_error( $handle ) ) {
-				curl_close( $handle );
-				return new WP_Error( 'http_request_failed', $curl_error );
+			curl_multi_add_handle( $this->curl_multi, $handle );
+			$curl_error = curl_multi_exec( $this->curl_multi, $active );
+			add_action( 'shutdown', array( $this, 'close_connections' ) );
+
+			if ( $curl_error !== CURLM_OK ) {
+				curl_multi_remove_handle( $this->curl_multi, $handle );
+				curl_multi_close( $this->curl_multi );
+
+				return new WP_Error( 'http_request_failed', curl_multi_strerror( $curl_error ) );
 			}
-			if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ) ) ) {
-				curl_close( $handle );
-				return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
-			}
 
-			curl_close( $handle );
 			return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
 		}
 
