requests.exceptions.ReadTimeout is not raised when response is chunked

https://gist.github.com/nickjoyce-wf/c536f2573ef124115f86

When a request has a timeout param supplied and the response is chunked but does not return enough data in time, `requests.exceptions.ReadTimeout` should be raised.

``` shell
$ mkvirtualenv test
(test)$ pip install requests werkzeug
(test)$ python server.py
```

In another terminal:

``` shell
$ workon test
(test)$ python client.py
```

Expected results:

`requests.exceptions.ReadTimeout` is raised due to response not being sent within the timeout specified by `requests.get`.

Actual results:

```
Traceback (most recent call last):
  File "client.py", line 3, in <module>
    requests.get('http://127.0.0.1:8000/', timeout=0.5)
  File "/Users/nick/.virtualenvs/test/lib/python2.7/site-packages/requests/api.py", line 65, in get
    return request('get', url, **kwargs)
  File "/Users/nick/.virtualenvs/test/lib/python2.7/site-packages/requests/api.py", line 49, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/Users/nick/.virtualenvs/test/lib/python2.7/site-packages/requests/sessions.py", line 461, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/nick/.virtualenvs/test/lib/python2.7/site-packages/requests/sessions.py", line 610, in send
    r.content
  File "/Users/nick/.virtualenvs/test/lib/python2.7/site-packages/requests/models.py", line 730, in content
    self._content = bytes().join(self.iter_content(CONTENT_CHUNK_SIZE)) or bytes()
  File "/Users/nick/.virtualenvs/test/lib/python2.7/site-packages/requests/models.py", line 662, in generate
    raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Read timed out.
```

Recorded http request/response via Wireshark:

```
GET / HTTP/1.1
Host: 127.0.0.1:8000
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.5.1 CPython/2.7.9 Darwin/13.4.0

HTTP/1.0 200 OK
Content-type: text/plain
Transfer-Encoding: chunked
Connection: close
Server: Werkzeug/0.9.6 Python/2.7.9
Date: Fri, 26 Dec 2014 17:51:21 GMT
```

Tested with requests==2.5.1


Just to be really clear, the bug here is that exception we're raising is wrong. We're raising a `ConnectionError`, not a `ReadTimeoutError`.


At this point though, people are almost certainly wrapping their code in except blocks for `ConnectionError` but most likely not in [`ReadTimeout`](https://github.com/kennethreitz/requests/blob/2d1ffad80bdfbefcb1922e0129fca28d493d3fb0/requests/exceptions.py#L62). We can't exactly just change this under their feet in 2.5.x, or 2.x. We'll have to wait for 3.0 for this.


Can an exception be thrown when access response content i.e:
content = r.text

can the above statement throw the following exception:
requests.exceptions.ConnectionError: HTTPConnectionPool(host='<some website>', port=80): Read timed out


Yes, if you set `stream=True`. Otherwise, no.

In future, it's better if you can ask these questions on Stack Overflow: this issue tracker is really meant for bugs only. =)


> people are almost certainly wrapping their code in except blocks for `ConnectionError` but most likely not in `ReadTimeout`

On contrary, people who set timeout are most likely wrapping their code in except blocks for `ReadTimeout` already, because this exception is thrown from the send request function.