Понимание пользовательского обратного вызова Passportjs

Я экспериментирую с Passportjs и код для пользовательского обратного вызова:

app.get('/login', function(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    if (err) { return next(err); }
    if (!user) { return res.redirect('/login'); }
    req.logIn(user, function(err) {
      if (err) { return next(err); }
      return res.redirect('/users/' + user.username);
    });
  })(req, res, next);
});

Я доволен всем этим кодом, за исключением второй до последней строки(req, res, next); - Может кто-нибудь объяснить, почему эти параметры добавляются в конце. Вероятно, это больше вопрос JS, чем вопрос Passport, но любая помощь очень ценится.

Ответы на вопрос(3)

Ваш ответ на вопрос