Top-level await, and the module that blocks its importers

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.