I\'m just looking for a reason as to why this is invalid:
() => throw 42;
I know I can get around it via:
() =&
If you don't use a block ({}) as body of an arrow function, the body must be an expression:
ArrowFunction:
ArrowParameters[no LineTerminator here] => ConciseBody
ConciseBody:
[lookahead ≠ { ] AssignmentExpression
{ FunctionBody }
But throw is a statement, not an expression.
In theory
() => throw x;
is equivalent to
() => { return throw x; }
which would not be valid either.