This shows the execution order given JavaScript's Call Stack, Event Loop, and any asynchronous APIs provided in the JS execution environment (in this example; Web APIs in a Browser environment)
Given the code
function nonCoercible(val) { | |
if (val == null) { | |
throw TypeError('nonCoercible shouldn\'t be called with null or undefined'); | |
} | |
const res = Object(val); | |
res[Symbol.toPrimitive] = () => { | |
throw TypeError('Trying to coerce non-coercible object'); | |
} | |
return res; | |
}; |