docs: function(handler) {
    var argLength = handler.length;
    var lastArgName = lastArgumentName(handler);
  
    // handler(req, res)
    // handler(req, res, next)
    // handler(err, req, res, next)
    if (lastArgName === "next" || argLength === 2) return handler;
  
    if (argLength > 4) {
      // handler(err, req, res, next, _)
      return function(err, req, res, next) {
        handler(err, req, res, next, function(e) {
          if (e) {
            if (err) e.innerError = err;
            return next(e);
          }
        });
      };
    } else if (argLength > 3) {
      // handler(req, res, next, _)
      return function(req, res, next) {
        handler(req, res, next, function(err) {
          if (err) return next(err);
        });
      };
    } else if (argLength > 2) {
      // handler(req, res, _)
      return function(req, res, next) {
        handler(req, res, function(err) {
          if (err) return next(err);
        });
      };
    }
  }