Technically, it propagates the error along to any dependent promises. If nobody's handling errors, then yes, they get swallowed. If that bugs you, all you have to do is add this once when your app starts up:
process.on('unhandledRejection', function(ex) {
console.error(ex.stack);
process.exit(1);
});
I think that should have been the default, personally, but it's a nuisance at worst. Throwing out promises because of this is absurd thinking.