What about a more flexible reconnection mechanism--e.g., taking a `func(error) bool` that's passed each connectivity error and can decide whether or not to reconnect (return true to reconnect; false to abandon the listener)? We could provide a built-in one that implements the exponential back-off logic you have here.