onTimerElapsed method
Called when the backoff expired
Implementation
@visibleForTesting
Future<void> onTimerElapsed() async {
_log.finest('Timer elapsed. Waiting for lock...');
final shouldContinue = await _timerLock.synchronized(() async {
_log.finest('Timer lock aquired');
if (_timer == null) {
_log.finest(
'The timer is already set to null. Doing nothing.',
);
return false;
}
if (!(await getIsReconnecting())) {
return false;
}
if (!(await getShouldReconnect())) {
_log.finest(
'Should not reconnect. Stopping here.',
);
return false;
}
_timer?.cancel();
_timer = null;
return true;
});
if (!shouldContinue) {
return;
}
_log.fine('Triggering reconnect');
await performReconnect!();
}