Source code
Revision control
Copy as Markdown
Other Tools
var N = 15000;
var mods = new Array(N);
mods[N - 1] = registerModule('f' + (N - 1),
parseModule('await 1;', 'f' + (N - 1) + '.js'));
mods[N - 2] = registerModule('f' + (N - 2),
parseModule('import "f' + (N - 1) + '"; throw "boom";', 'f' + (N - 2) + '.js'));
for (var i = N - 3; i >= 0; i--) {
mods[i] = registerModule('f' + i,
parseModule('import "f' + (i + 1) + '";', 'f' + i + '.js'));
}
for (var i = N - 1; i >= 0; i--) moduleLink(mods[i]);
for (var i = N - 1; i >= 0; i--) moduleEvaluate(mods[i]).catch(() => {}); // shallow: dep is EvaluatingAsync
try {
drainJobQueue(); // leaf fulfills -> f{N-2} throws -> AsyncModuleExecutionRejected recurses N deep
} catch(e) {
assertEq(e instanceof InternalError, true);
assertEq(e.message, "too much recursion");
}