index.js
function httpMiddleware (req, res, arr, done) {
  done = done || noop

  assert.ok(isReq(req), 'is incoming message')
  assert.ok(isRes(res), 'is server response')
  assert.ok(Array.isArray(arr), 'is array')
  assert.equal(typeof done, 'function', 'is function')

  mapLimit(arr, 1, iterator, done)

  function iterator (fn, next) {
    next = dezalgo(next)
    if (fn.length === 3) return fn(req, res, next)
    fn(req, res)
    next()
  }
}
function httpMiddleware (req, res, arr, done) {
  done = done || noop

  assert.ok(isReq(req), 'is incoming message')
  assert.ok(isRes(res), 'is server response')
  assert.ok(Array.isArray(arr), 'is array')
  assert.equal(typeof done, 'function', 'is function')

  mapLimit(arr, 1, iterator, done)

  function iterator (fn, next) {
    next = dezalgo(next)
    if (fn.length === 3) return fn(req, res, next)
    fn(req, res)
    next()
  }
}
create a middleware stack (obj, obj, [fn(obj, obj, fn?)], fn) -> null