Use `await` at your Node.js code's top level!
Switch branches/tags
Nothing to show
Clone or download

top-level-await (PoC)

Allow using await at your code's top level. Requires Node.js v7.6.0 or higher.

Not this:

// 💩
(async function() {
  console.log(await Promise.resolve('hello world'));

But this:

// 🎉
console.log(await Promise.resolve('hello world'));


npm i top-level-await


It's a two-step process: first require() this module, then require() the rest of your code:

// bootstrap.js

Inside app.js, you can use await whenever you like.

You can also tell Node to require the module for you, instead of using a separate bootstrap script:

$ node -r top-level-await app

Which works for CLI tools too:

#!/usr/bin/env node -r top-level-await

console.log( await Promise.resolve('hello world') );


By hacking Module.wrap().

This is done without prejudice, so all modules that get loaded after loading this module will be "fixed".

Is it production-ready?