Top-level await in JavaScript only works in ES modules, not in regular scripts, and requires parsing as an ES module in browsers or using .mjs extension or 'type': 'module' in Node.js.
If await is used outside an async function in a classic script, a syntax error occurs immediately.
Module execution pauses for top-level await until the awaited promise settles, affecting the entire module's execution and any importing modules.
The module system adds an execution barrier for top-level await, causing a delay in the import process until the awaited value is resolved.
Top-level await changes module loading process by introducing asynchronous pauses without wrapping everything in a function.
Circular dependencies with top-level await are more strictly managed in modern runtimes to prevent unresolved deadlocks.
To avoid issues with top-level await and circular dependencies, it's crucial to consider the order of operations and isolate async work inside exported functions.
Engine splits module loading into parsing, setup, and execution phases, holding execution when encountering a top-level await to maintain consistency.
Top-level await provides a more natural coding order but introduces an execution barrier until the awaited value is ready.
Modern JavaScript modules behave with timing constraints due to top-level await, affecting the flow of execution and module imports.