Ok, moving the blocking send out of the server loop makes good sense.

Not sure what you mean about returning `true` or `false` -- `erlang:send/2` doesn't provide any details about whether the message delivery was successful.  We could do the old-style thing where we try to send each message that we dequeue using `[noconnect,nosuspend]` and spawn to send it if/when that fails.  That'd allow for fast/efficient dequeuing when a connection is reestablished. The key thing of course is to only try to send one message at a time.