code: def _raise_timeout(self, err, url, timeout_value):
          
  
          if isinstance(err, SocketTimeout):
              raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
  
          # See the above comment about EAGAIN in Python 3. In Python 2 we have
          # to specifically catch it and throw the timeout error
          if hasattr(err, 'errno') and err.errno in _blocking_errnos:
              raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
  
          # Catch possible read timeouts thrown as SSL errors. If not the
          # case, rethrow the original. We need to do this because of:
          # http://bugs.python.org/issue10272
          if 'timed out' in str(err) or 'did not complete (read)' in str(err):  # Python < 2.7.4
              raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
docs: Is the error actually a timeout? Will raise a ReadTimeout or pass