don't call done twice for thrown errors inside parameterized routes

fixes #1995
This commit is contained in:
Roman Shtylman
2014-03-23 14:42:46 -04:00
parent cc38cccae1
commit cb1fbce46b
2 changed files with 20 additions and 1 deletions

View File

@@ -280,7 +280,7 @@ proto.process_params = function(route, req, res, done) {
return param();
}
} catch (err) {
done(err);
return done(err);
}
done();

View File

@@ -111,6 +111,25 @@ describe('Router', function(){
router.handle({ url: '/foo', method: 'GET' }, {}, done);
});
it('should handle throwing inside routes with params', function(done) {
var router = new Router();
router.get('/foo/:id', function(req, res, next){
throw new Error('foo');
});
router.use(function(req, res, next){
assert(false);
});
router.use(function(err, req, res, next){
assert.equal(err.message, 'foo');
done();
});
router.handle({ url: '/foo/2', method: 'GET' }, {}, done);
});
})
describe('.all', function() {