title: SSLError (read operation timed out) instead of timeout when PUT using Requests
body: <p>I'm trying to do various REST requests to a piece of equipment using the Requests package.
  It is working, but on some requests, like PUTs, I'm getting a SSLError, instead of a timeout that I'm specifying.</p>
  
  <p>I have the code set up to retry, up to 5 times, doubling the timeout each time (1,2,4,8, 16, 32), and if I treat the SSLError as a timeout, then it will eventually pass. Here's an example, and you can see the SSLError is occurring at the pace of the timeout interval:</p>
  
  <pre><code>2013-12-10 19:41:13.208 22294 DEBUG client [-] PUT: Request for https://192.168.200.20/api/v1/global/host-name headers {'content-type': 'application/json', 'Accept': 'application/json', 'X-auth-token': u'...omitted...'} payload {'host-name': 'TestHost'}
  2013-12-10 19:41:13.209 22294 INFO requests.packages.urllib3.connectionpool [-] Starting new HTTPS connection (1): 192.168.200.20
  2013-12-10 19:41:14.253 22294 ERROR client [-] EXCEPTION The read operation timed out  &lt;&lt;&lt; SSL Error
  2013-12-10 19:41:14.255 22294 INFO requests.packages.urllib3.connectionpool [-] Starting new HTTPS connection (1): 192.168.200.20
  2013-12-10 19:41:16.301 22294 ERROR client [-] EXCEPTION The read operation timed out
  2013-12-10 19:41:16.302 22294 INFO requests.packages.urllib3.connectionpool [-] Starting new HTTPS connection (1): 192.168.200.20
  2013-12-10 19:41:20.346 22294 ERROR client [-] EXCEPTION The read operation timed out
  2013-12-10 19:41:20.348 22294 INFO requests.packages.urllib3.connectionpool [-] Starting new HTTPS connection (1): 192.168.200.20
  2013-12-10 19:41:25.845 22294 DEBUG requests.packages.urllib3.connectionpool [-] "PUT /api/v1/global/host-name HTTP/1.1" 204 0 _make_request /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py:289
  2013-12-10 19:41:25.846 22294 DEBUG client [-] PUT: Completed [204]
  </code></pre>
  
  <p>As you can see the EXCEPTION log messages are the SSLError errors, but they are timeouts as they map to the timeout I specify.</p>
  
  <p>In python, I'm doing this for the calls (it's spread out so here is the gist of it):</p>
  
  <pre><code>url = ('https://%(host)s/api/v1/%(resource)s' %
         {'host': self.host, 'resource': resource})
  ...
  response = self._request(method, url, try_num, timeout=timeout,
                           headers=headers, data=payload)
  ...
  def _request(self, method, url, attempt, **kwargs):
      ...
      try:
          response = requests.request(method, url, verify=False, **kwargs)
      except Timeout:
          self.status = wexc.HTTPRequestTimeout.code
          LOG.debug(_("%(method)s: Request timeout" ...)
      except SSLError as se:
          LOG.error("EXCEPTION %s", se)
          self.status = wexc.HTTPRequestTimeout.code
  </code></pre>
  
  <p>If I don't handle the SSL error, then it gets caught as a ConnectionError.  Any idea what I may be doing wrong?</p>
  
  <p>I have this hack in place, but would like to know why I get the SSL error.</p>