Yeah I think this can be simplified even further.  This was originally going to be the class responsible for checking the errno from a `socket.error`, but given that we don't (can't) do that for now, this can be simpler.

All we need for now is:

* If it's an exception we want to retry on, make sure we retry is `attempt_number < max_attempts`.
* If it's not an exception we want to retry on, immediately raise the exception regardless of attempt number.
* If it's an exception we want to retry but we've exceeded the `max_attempts` raise the error.