         guard let (move, promotion, attackers) = _undoHistory.popLast() else {
             return nil
         }
-        if let promotion = promotion {
-            try! execute(uncheckedMove: move, promotion: { promotion })
-        } else {
-            try! execute(uncheckedMove: move)
-        }
+        try! _execute(uncheckedMove: move, promotion: { promotion ?? ._queen })
         attackersToKing = attackers
         return move
     }

        playerTurn.invert()
    }

    #else

    /// Returns `true` if the move is legal.

            throw ExecutionError.illegalMove(move, playerTurn, board)
        }
        try execute(uncheckedMove: move, promotion: promotion)
    }

    /// Executes `move`, updating the state for `self`.
