Don't use request to keep track of scoket state since we now use timeout whic actually works much better.

Rescue from Errno::EAGAIN and fail the request if something doens't work out as expected. Retry the request several times when using addresses_for if there is a transient failure.