A module using top-level await becomes asynchronous, and every module importing it waits — transitively.
// config.js
export const config = await fetch('/config.json').then(r => r.json())
// every importer of config.js now waits for that fetch,
// and so does every importer of THOSE modules.
// which is why this belongs at an entry point and almost
// nowhere else. a slow import at the bottom of the graph
// delays the entire application start.
It is genuinely useful for conditional imports and for initialisation that must complete before anything runs, and it is a foot-gun in a shared utility module. CommonJS cannot import an ES module using it at all, which is the other constraint and is why a library adopting it makes a compatibility decision on behalf of its consumers.