Code like: (41 == 42) || throw "x"; gives an error saying: Error: Expected an expression, but got 'throw'. 41 == 42 || throw "not"; ^^^^^ That makes it sound like "throw" is not an expression, where the problem is that it's not a LogicalAndExpression.