Alright, I think you have me convinced. I'd rather try it without the callback and just reconnect every time, then see what users say. That way we don't have to commit to any kind of reconnect API that will need to be maintained in the future.

That being said, there's still a lot of issues in the current reconnect logic that need fixing, I'll comment there.