The timeouts have different causes. In one instance the timeout is a TCP connection timeout. In another instance the connection succeeded but the service timed out while supposedly producing a response. For the latter case, the API is measuring the time between successful reads, so that the total request time can still be arbitrarily large.