I'm using the bluebird Promise library. I'd like to chain promises and catch specific promises errors. Here's what I'm doing :
getSession(sessionId)
.catch(function (err) {
next(new Error('session not found'));
})
.then(function (session) {
return getUser(session.user_id);
})
.catch(function (err) {
next(new Error('user not found'));
})
.then(function (user) {
req.user = user;
next();
});
But if an error is thrown by getSession
, the two catch
are called, as well as the second then
. I'd like to stop the error propagation at the first catch
, so that the second catch
is only called when getUser
throws, and the second then
when getUser
succeeds. What do?