private async Task <IEnumerable <QueueMessage> > ReceiveMessagesWithLinearBackOffAsync() { var currentBackOffInSeconds = 0; var messages = new QueueMessage[0]; while (!messages.Any()) { await Task.Delay(TimeSpan.FromSeconds(Math.Min(currentBackOffInSeconds++, _maximumBackOffDurationInSeconds)), _cancellationToken); messages = (await _queueClient.ReceiveMessagesAsync(_maximumReceiveBatchSize, TimeSpan.FromSeconds(_invisibilityTimeoutInSeconds), _cancellationToken)).Value; } return(messages); }