Today the ESM loading/execution pipeline is very linearly split into separate phases. When the browser sees a <script type="module" src="..."> tag it will:
- Load the root of that module graph
- Once it's loaded, look at its dependencies and fetch all of them
- Once each one of those dependencies is loaded, look at their dependencies and recurse.
- After that the whole module graph is loaded, if there have been no errors, "link" it (i.e. validate that imports/exports match)
- After that a graph is linked, synchronously execute all of it (modulo top-level await, which causes some modules to be blocked on their dependencies to complete)
The import defer proposal allows partially pulling some module out of this linear process, so that their execution is deprioritized compared