node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



Fork of express v4 to support async-await middleware. The idea is to have this around until express natively supports async-await. I think this will land in v5 (I can't guarantee because I'm not involved at all).

const expat = require('expat');
const app = expat();
app.get('/', async (request, response) {
  const account = await getAccount();
app.listen(process.env.PORT || 3000);


$ npm install expat

Quick Explanation

If your middleware return truthy (.then isn't checked explicitly), promise handling kicks in. It wraps the return value in Promise.resolve and calls next(err) if the promise is rejected. If the promise is rejected but no error is specified, an unknown error is created (else next would be called as if the next route needs to continue).

The promise is not used for the flow control, so you still need to call next(), next('route'), or next(error) if you want to or have to.

Having promise support means await next() would make sense to do, just like in Koa, but that's not implemented (yet).