Our goal here is to make sure that there's at least one message sent specifically by this thread (rather than by any thread in the queue) that will be rejected by the APNs gateway. We want to reconnect so we can make sure that we've sent that message. Our intention isn't just to close the connection, but to do so in a known state, and the only that happens is right when a notification gets rejected.

The write could fail for lots of reasons (full pipe, somebody spilled coffee on a router, etc.), and if it does, we can't be sure that we'll ever wind up in a known state. We want to keep retrying -- at least for a little while -- to make sure everything is cleaned up before we shut down for real.

This approach is not without its problems (see #6), and I'm hoping to dig deeper into that shortly.