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; | |
| }; |