Discovered by @nyaxt. Given the graph
A.js -> 404.js
-> B.js -> C.js
(working from https://dl.dropboxusercontent.com/u/20140634/modules-all-better/index.html which has various fixes applied from in-progress PRs)
- If 404.js comes back first, then during "fetch the descendants of and instantiate a module script", we proceed forward to do ModuleDeclarationInstantion(), which fails because it can't find 404.js. But then we propagate this error, marking B.js and C.js as errored.
- This is not good, because it means a future
<script type="module" src="B.js"> will auto-fail, even if there's nothing wrong with that subgraph.
- If B.js/C.js comes back first, they get marked as instantiated, but then that gets overridden with the error, same as above.
At first glance it seems that the mechanism of "instantiate anyway then propagate errors" is not working well, at least for fetch failures.