unhandledRejectionとrejectionHandled

io.jsのver.1.4くらいからprocess.onでunhandledRejectionとrejectionHandledというイベントが使えるようになったみたいだ。

unhandledRejection

process.on('unhandledRejection', function(reason, p) {
  console.log(reason);
  console.log(p);
});

new Promise(function(resolve, reject) {
  reject({ err: 'error' });
});
$ iojs index.js
{ err: 'error' }
{}

どうもPromiseを使った時にcatchをしていないと呼ばれるようだ。 reasonにはrejectに渡された引数が、pにはPromiseが渡される。

catch忘れの予防として書いておくと嬉しいのだと思う。 それ以外にも何か嬉しい使い方があるんだろうか。

rejectionHandled

何度かテキトーなコードを書いてみたのだけど、よくわからなかった。

later than after an event loop turn.

という記述を見つけたのだけどイベントループ中での処理タイミングが異なるのかな?


とりあえずPromiseを使う上でunhandledRejectionは大事そうなことはわかった。