Check for disconnects by making sure we see some activity at at least once every 2 minutes.
For consistency, emit a present-tense "disconnect" event, but only if we are already connected
Track and clear the presence interval timer; make the timer period configurable.
Implement and use custom error classes
Clean up error handling; be careful to not throw errors before we're connected.