I found correct way of catching error for express not to break listening:
jwt.verify(token, SECRET, async function(err, decoded) {
if (err) {
if (err.name === 'TokenExpiredError') {
return res.status(401).json({ error: 'Token expired' });
}
if(err.name === 'JsonWebTokenError') {
return res.status(401).json({ error: 'Token invalid' });
}
}
else {
return res.status(200).json('Token verified');
}
})