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

README.md

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'));

Installation

npm i top-level-await

Usage

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

// bootstrap.js
require('top-level-await');
require('./app');

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') );

How?

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?

¯\_(ツ)_/¯