express-wrap-async
Usage
npm i --save express-wrap-async
import wrapAsync from 'express-wrap-async';
Promise example
function routePromise(req, res) {
return new Promise((resolve) => {
res.send({ ok: true });
resolve();
});
}
router.get('/promise', wrapAsync(routePromise));
Babel example:
const fakeWait = () => new Promise((resolve) => setTimeout(resolve, 100));
async function asyncRoute(req, res) {
await fakeWait();
res.send({ ok: true });
}
router.get('/async', wrapAsync(asyncRoute));
Multiple middlewares
const middlewares = [
async(req, res, next) => {
await fakeWait();
next();
},
(req, res, next) => {
next();
},
asyncRoute,
];
router.get('/middlewares', wrapAsync(middlewares));
Error handling
async function errorRoute(req, res) {
await fakeWait();
throw new Error('unexpected error');
}
router.get('/standard', wrapAsync(errorRoute));
app.use((err, req, res, next) => {
res.status(500);
res.json({
error: err.message,
});
});
MIT License
Copyright (c) 2016 Łukasz Sentkiewicz