EventEmitterをPromiseで制御できるようにするライブラリ

EventEmitterをPromiseで制御するで書いたようなことを楽に(楽か?)してくれるライブラリchoco.jsを作った。

以下はサンプルのようなコード。

main process

let ipc = require('ipc'),
    fs = require('fs'),
    choco = require('choco');

function getFileStat(filename) {
  return new Promise(function(resolve, reject) {
    fs.stat(filename, (err, stat) => (err) ? reject(err) : resolve(stat));
  });
}

ipc.on('get-file-stat', function(event, params) {
  let { filename } = params;

  getFileStat(filename)
    .then(function(stat) {
      event.sender.send('get-file-stat-success', {
        [choco.id]: params[choco.id],
        stat,
      });
    })
    .catch(function(err) {
      event.sender.send('get-file-stat-failure', {
        [choco.id]: params[choco.id],
        err,
      });
    });
});

renderer process

let ipc = global.require('ipc'),
    co = require('co'),
    choco = require('choco');

choco.trigger = 'send';

co(function*() {
  return yield choco(ipc, 'get-file-stat', {
    filename: '/path/to/file'
  });
}).then(function(result) {
  console.log(result);
}).catch(function(err) {
  console.error(err);
});

そんなに良くなった感じがしないなあ……