reconnect callbacks
leave it up to the user to limit reconnects