public async Task ExecuteAsync()
        {
            _stateMachine.Start();

            if (_suspended.HasWork)
            {
                _suspended.CopyTo(_work, _serial, _stateMachine);
            }

            _processing = true;
            IExecutionTask?[] buffer = _buffer;

            RESTART:
            try
            {
                do
                {
                    var work = TryTake(buffer);

                    if (work != 0)
                    {
                        if (!buffer[0] !.IsSerial)
                        {
                            for (var i = 0; i < work; i++)
                            {
                                buffer[i] !.BeginExecute(_requestAborted);
                                buffer[i] = null;
                            }
                        }
                        else
                        {
                            try
                            {
                                _batchDispatcher.DispatchOnSchedule = true;

                                for (var i = 0; i < work; i++)
                                {
                                    IExecutionTask task = buffer[i] !;
                                    task.BeginExecute(_requestAborted);
                                    await task.WaitForCompletionAsync(_requestAborted)
                                    .ConfigureAwait(false);

                                    buffer[i] = null;

                                    if (_requestAborted.IsCancellationRequested)
                                    {
                                        break;
                                    }
                                }
                            }
                            finally
                            {
                                _batchDispatcher.DispatchOnSchedule = false;
                            }
                        }
                    }
                    else
                    {
                        if (_work.HasRunningTasks || _serial.HasRunningTasks)
                        {
                            await Task.Yield();
                        }

                        break;
                    }
                } while (!_requestAborted.IsCancellationRequested);
            }