Arrow functions are analyzed differently than normal functions. See Sort order .
Although an arrow in an arrow function is not an operator, arrow functions have special parsing rules that interact differently with operator priority over regular functions.
let callback; callback = callback || function() {}; // ok callback = callback || () => {}; // SyntaxError: invalid arrow-function arguments callback = callback || (() => {}); // ok
It should have something to do with the associativity of the triple operator (from right to left), see link
source share