diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 8ba745c..9a02b64 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -3659,7 +3659,7 @@ function system_image_toolkits() {
 }
 
 /**
- * Attempts to get a file using drupal_http_request and to store it locally.
+ * Attempts to get a file using Guzzle HTTP client and to store it locally.
  *
  * @param $url
  *   The URL of the file to grab.
@@ -3700,12 +3700,16 @@ function system_retrieve_file($url, $destination = NULL, $managed = FALSE, $repl
       $path = $destination;
     }
   }
-  $result = drupal_http_request($url);
-  if ($result->code != 200) {
-    drupal_set_message(t('HTTP error @errorcode occurred when trying to fetch @remote.', array('@errorcode' => $result->code, '@remote' => $url)), 'error');
-    return FALSE;
+  $request = drupal_container()->get('http_default_client')->get($url);
+  try {
+    $response = $request->send();
+    $data = $response->getBody(TRUE);
+    $local = $managed ? file_save_data($data, $path, $replace) : file_unmanaged_save_data($data, $path, $replace);
+  }
+  catch (BadResponseException $e) {
+    drupal_set_message(t('HTTP error @errorcode occurred when trying to fetch @remote.', array('@errorcode' => $response->getStatusCode(), '@remote' => $url)), 'error');
+    return FALSE; 
   }
-  $local = $managed ? file_save_data($result->data, $path, $replace) : file_unmanaged_save_data($result->data, $path, $replace);
   if (!$local) {
     drupal_set_message(t('@remote could not be saved to @path.', array('@remote' => $url, '@path' => $path)), 'error');
   }
