Allow reconnect on connection loss with retry using ReconnectStatusListener

This is the combined solution we discussed via email.
It may be worth checking the `cause` before attempting to reconnect. If the client is closed normally, this method will be called as well with `DisconnectCause.CONNECTION_CLOSED`. In that case, it doesn't need to reconnect.