Promiseの(Promiseと言ってもES6 Promisesじゃなくてbluebirdなんだけど)catch内でのreturnとthrowの挙動の違いについて知らなくて試したのでメモ。 環境はnode.js 0.10.33とbluebird 2.3.11です。 var Promise = require('bluebird'); function a() { return new Promise(function(resolve, reject) { reject(1); }).catch(function(err) { return err; }); } a().then(function(data) { console.log('then'); console.log(data); });