# psf__requests-2674
# Loki Mode Multi-Agent Patch
# Attempts: 1

--- a/requests/adapters.py
+++ b/requests/adapters.py
@@ -17,6 +17,8 @@ from .packages.urllib3.poolmanager import PoolManager, proxy_from_url
 from .packages.urllib3.response import HTTPResponse
 from .packages.urllib3.util import Timeout as TimeoutSauce
 from .packages.urllib3.util.retry import Retry
+from .packages.urllib3.exceptions import ClosedPoolError
+from .packages.urllib3.exceptions import LocationParseError
 from .compat import urlparse, basestring
 from .utils import (DEFAULT_CA_BUNDLE_PATH, get_encoding_from_headers,
                     prepend_scheme_if_needed, get_auth_from_url, urldefragauth)
@@ -24,6 +26,7 @@ from .structures import CaseInsensitiveDict
 from .packages.urllib3.exceptions import MaxRetryError
 from .packages.urllib3.exceptions import TimeoutError
 from .packages.urllib3.exceptions import SSLError as _SSLError
+from .packages.urllib3.exceptions import HTTPError as _HTTPError
 from .packages.urllib3.exceptions import ProxyError as _ProxyError
 from .cookies import extract_cookies_to_jar
 from .exceptions import (ConnectionError, ConnectTimeout, ReadTimeout, SSLError,
@@ -330,6 +333,12 @@ class HTTPAdapter(BaseAdapter):
 
         except (_SSLError, _HTTPError) as e:
             if isinstance(e, _SSLError):
                 raise SSLError(e, request=request)
+            elif isinstance(e, ClosedPoolError):
+                raise ConnectionError(e, request=request)
+            elif isinstance(e, TimeoutError):
+                raise Timeout(e, request=request)
+            elif isinstance(e, LocationParseError):
+                raise InvalidURL(e, request=request)
             elif isinstance(e, ReadTimeoutError):
                 raise ReadTimeout(e, request=request)
             else:
--- a/requests/models.py
+++ b/requests/models.py
@@ -21,6 +21,7 @@ from .packages.urllib3.fields import RequestField
 from .packages.urllib3.filepost import encode_multipart_formdata
 from .packages.urllib3.util import parse_url
 from .packages.urllib3.exceptions import (
+    DecodeError,
     ReadTimeoutError,
     ProtocolError)
 from .exceptions import (
@@ -572,8 +573,11 @@ class Response(object):
                     raise ChunkedEncodingError(e)
                 except DecodeError as e:
                     raise ContentDecodingError(e)
+                except ReadTimeoutError as e:
+                    raise ConnectionError(e)
             except AttributeError:
                 # Standard file-like object.
                 while True:
                     chunk = self.raw.read(chunk_size)
                     if not chunk: