private async Task ProcessCompletedMessage(IQueueMessage message, QueueTriggeringContext context) { switch (context.MovingAction) { case QueueTriggeringContext.MessageMovingAction.Default: await _queueReader.FinishMessageAsync(message); break; case QueueTriggeringContext.MessageMovingAction.MoveToEnd: await MoveToEnd(message, context.NewMessageVersion); break; case QueueTriggeringContext.MessageMovingAction.MoveToPoison: await MoveToPoisonQueue(message, context.NewMessageVersion); break; default: throw new ArgumentOutOfRangeException(); } await context.Delay(await _queueReader.Count()); }