CatTail
4/26/2016 - 3:56 AM

async/await wrapper for express middleware

async/await wrapper for express middleware

// wrap async function to use as express middleware or route

// let wrap = fn => (...args) => fn(...args).catch(args[2])
function wrapRoute(fn) {
  return function () {
    return fn.apply(undefined, arguments)
      .catch(arguments[arguments.length - 1]);
  };
}

function wrapMiddleware(fn) {
  return function () {
    const next = arguments[arguments.length - 1];
    return fn.apply(undefined, arguments)
      .then(next.bind(null, null))
      .catch(next);
  };
}