private async Task<bool> Backoff()
{
_backoffIndex++;
if (_backoffIndex >= _backoffTimings.Length)
{
_backoffIndex = _backoffTimings.Length - 1;
}
try
{
_logger?.Verbose("AsynchronousBackoffPolicy - backing off for {0}ms", _backoffTimings[_backoffIndex].TotalMilliseconds);
await Task.Delay(_backoffTimings[_backoffIndex], _cancellationToken);
return true;
}
catch (TaskCanceledException)
{
return false;
}
}
}