Use the same timeout when reinitializing a connection
Handle dirty flag in conn.recv()

* If the connection is dirty, reinit
* If we get a BufferUnderflowError, the server could have gone away, so mark it dirty
Remove unnecessary method