summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/api/esm.md28
1 files changed, 23 insertions, 5 deletions
diff --git a/doc/api/esm.md b/doc/api/esm.md
index 47e718c975..cf10f6120d 100644
--- a/doc/api/esm.md
+++ b/doc/api/esm.md
@@ -585,15 +585,16 @@ would provide the exports interface for the instantiation of `module.wasm`.
## Top-level `await`
+<!--
+added: v14.8.0
+-->
+
> Stability: 1 - Experimental
-The `await` keyword may be used in the top level (outside of async functions)
-within modules as per the [ECMAScript Top-Level `await` proposal][].
+The `await` keyword may be used in the top level body of an ECMAScript module.
Assuming an `a.mjs` with
-<!-- eslint-skip -->
-
```js
export const five = await Promise.resolve(5);
```
@@ -610,6 +611,23 @@ console.log(five); // Logs `5`
node b.mjs # works
```
+If a top level `await` expression never resolves, the `node` process will exit
+with a `13` [status code][].
+
+```js
+import { spawn } from 'child_process';
+import { execPath } from 'process';
+
+spawn(execPath, [
+ '--input-type=module',
+ '--eval',
+ // Never-resolving Promise:
+ 'await new Promise(() => {})',
+]).once('exit', (code) => {
+ console.log(code); // Logs `13`
+});
+```
+
<i id="esm_experimental_loaders"></i>
## Loaders
@@ -1441,7 +1459,6 @@ success!
[Conditional exports]: packages.md#conditional-exports
[Core modules]: modules.md#core-modules
[Dynamic `import()`]: https://wiki.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports
-[ECMAScript Top-Level `await` proposal]: https://github.com/tc39/proposal-top-level-await/
[ES Module Integration Proposal for WebAssembly]: https://github.com/webassembly/esm-integration
[Import Assertions]: #import-assertions
[Import Assertions proposal]: https://github.com/tc39/proposal-import-assertions
@@ -1476,5 +1493,6 @@ success!
[percent-encoded]: url.md#percent-encoding-in-urls
[resolve hook]: #resolvespecifier-context-defaultresolve
[special scheme]: https://url.spec.whatwg.org/#special-scheme
+[status code]: process.md#exit-codes
[the official standard format]: https://tc39.github.io/ecma262/#sec-modules
[url.pathToFileURL]: url.md#urlpathtofileurlpath