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());
        }