The timeout never gets reset.
If there is no error. The loop finished in one step due to the break.
If there is an error and it is not a socket.error with errno 111 (connection refused).
The error also gets raised.
The loop only loops on errno 111.

This loop happens on every event.

Theoretically it could happen that the timeout only occurs after 2*timeout, when:
1. the server only accepts connections on the last try
2. The response takes more than timeout.

If the connection stays closed, the error occurs only after the timeout.
If the connection is slow, the connect returns immediately in the loop, but the read takes ages.

But I found another issue, if we reach the timeout, there won't be a conn.request. I have to take this into account.