// main.js
import {} from from "./tla.js";
import {} from from "./throw.js';
// tla.js
await 1;
// throw.js
throw 1;
Evaluate(main.js)
- InnerModuleEvaluation(main.js)
- InnerModuleEvaluation(tla.js)
- module(tla.js).[[AsyncEvaluationOrder]] += 1
- add module(main.js) to module(tla.js).[[AsyncParentModules]]
- InnerModuleEvalation(throw.js)
- module(throw.js).ExecuteModule() // throws
- returns Abrupt completion
- Exit InnerModuleEvaluation(main.js) with abrupt completion
as of now, the module(main.js).[[CycleRoot]] is still null as InnerModuleEvaluation(main.js) exits abnormally.
Then
- AsyncModuleExecutionFulfilled(tla.js)
- GatherAvailableAncestors(tla.js)
- for each m in module.[[AsyncParentModules]] // main.js
- access m.[[CycleRoot]] --> still null
GatherAvailableAncestors
Step 1.a. If execList does not contain m and m.[[CycleRoot]].[[EvaluationError]] is empty
Both Spidermonkey and V8 have fixed this in their implementations
SM fix
V8 fix
CCing @nicolo-ribaudo
Evaluate(main.js)
as of now, the module(main.js).[[CycleRoot]] is still null as
InnerModuleEvaluation(main.js)exits abnormally.Then
GatherAvailableAncestors
Both Spidermonkey and V8 have fixed this in their implementations
SM fix
V8 fix
CCing @nicolo-ribaudo