The Modern (ES6) and Express-Style Middleware Composition.
$ npm install expressify-middleware
const co = require('co')
const Middleware = require('expressify-middleware')
const middleware = new Middleware()
middleware.push((req, res, next) => {
req.arr.push(1)
return next().then(() => {
req.arr.push(6)
})
})
middleware.push(async (req, res, next) => {
req.arr.push(2)
await next()
req.arr.push(5)
})
middleware.push(co.wrap(function * (req, res, next) {
req.arr.push(3)
yield next()
req.arr.push(4)
}))
const req = { arr: [] }
const res = {}
middleware.compose(req, res).then(() => {
console.log(req.arr.toString() === '1,2,3,4,5,6')
})