title: How to catch the orignial exception
body: <p>I'm using the <code>requests</code> module with <code>max_retries</code> option. I would like to catch the exceptions only related to timeouts and slow replies:</p>
  
  <pre><code>import requests
  from requests.exceptions import ConnectTimeout, Timeout
  
  URL = 'http://exmaple.com/sleep' # sleeps for 5 seconds before reply
  
  with requests.Session() as s:
      try:
          a = requests.adapters.HTTPAdapter(max_retries=2)
          s.mount('http://', a)
          r = s.get(URL, timeout=1)
      except (ConnectTimeout, Timeout) as err:
          print('# {} - timeout'.format(URL))
  </code></pre>
  
  <p>But it looks like the underlying <code>urllib3</code> library throws <code>ReadTimeoutError</code> and <code>requests</code> <a href="https://github.com/psf/requests/blob/v2.22.0/requests/adapters.py#L500-L514" rel="nofollow noreferrer">doesn't catch it</a> and throws <code>ConnectionError</code> instead:</p>
  
  <pre><code>requests.exceptions.ConnectionError: HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: /sleep (Caused by ReadTimeoutError("HTTPConnectionPool(host='example.com', port=80): Read timed out. (read timeout=1)"))
  </code></pre>
  
  <p>I don't want to add <code>ConnectionError</code> to the list because there are other exceptions that inherit from it so it would also catch those.</p>
  
  <p>Is there a way to catch the original exception or perhaps all exceptions in the chain using <a href="https://docs.python.org/3/library/traceback.html" rel="nofollow noreferrer"><code>traceback</code></a> module.</p>