jfromaniello / express-unless

Conditionally add a middleware to express with some common patterns
MIT License
178 stars 27 forks source link

"UnhandledPromiseRejectionWarning" if middleware throws exception (Version 1.0.0) #31

Open nschmit opened 2 years ago

nschmit commented 2 years ago

When my authentication middleware is throwing an exception (see code below), an 'UnhandledPromiseRejectionWarning" is issued. The exception is not propagated further, which causes problems in my program. This problem did not exist in the previous version 0.5.0.

export function requiresAuth(req, res, next) {
  if (req.session && req.session.user && req.session.user.id) {
    return next();
  } else {
    throw new NoValidSessionError('requiresAuth');
  }
}
requiresAuth.unless = require('express-unless');

Possible fix in index.js:

    try {
      middleware(req, res, next);
    } catch(err) {next(err)}
nathanlepori commented 2 years ago

This has become a bigger issue in newer node versions since now unhandled rejections crash the process. Also note that Express v5 will handle promise rejections and forward to error handlers so it might be worth to do that in this middleware as well. The fix should be pretty easy I think