public async Task HandleRequestsAsync(CancellationToken cancellationToken = default) { await foreach (var request in _queue.ReadAllAsync(cancellationToken)) { if (_elevatorMover.HasToMoveToAnotherFloorToPickUpPassengerFor(request)) { await _elevatorMover.MoveToFloorAsync( _elevatorMover.CreateRequestForMovingToFloor(_elevatorMover.Elevator.CurrentFloor, request.FromFloor), cancellationToken ); } await _elevatorMover.MoveToFloorAsync(request, cancellationToken); } await _queue.Completion; }