Connectのリクエストハンドラ的なもの??? その2

前回の続きというか改良版?というか。

app.js
var http = require('http'),
    server = http.createServer();

function RequestHandler() {
  this._fn = [];
}

RequestHandler.prototype.use = function () {
  var that = this;
  Array.prototype.slice.call(arguments).forEach(function (fn) {
    (typeof fn === 'function') && that._fn.push(fn);
  });
};

RequestHandler.prototype.callHandlers = function (req, res) {
  this._fn.some(function (fn) {
    return (fn(req, res, function () {
      return false;
    }) === void 0);
  });
};

var rh = new RequestHandler();
//rh.use(require('./aaa'));
//rh.use(require('./bbb'));
//rh.use(require('./ccc'));
rh.use(
  require('./aaa'),
  require('./bbb'),
  require('./ccc')
);

server.on('request', function (req, res) {
  rh.callHandlers(req, res);
});
server.listen(3000);
aaa.js
module.exports = function (req, res, next) {
  console.log('aaa');
  return next();
};
bbb.js
module.exports = function (req, res, next) {
  console.log('bbb');
  return next();
};
ccc.js
module.exports = function (req, res, next) {
  console.log('ccc');
  res.writeHead(200, {
    'content-type': 'text/plain; charset=utf-8'
  });
  res.end('ccc.js');
  return next();
};
端末
$ node app.js
aaa
bbb
ccc


とかこんな感じ?
ちょっとしたものくらいならこれでも……とか思ってるとどんどん機能追加とかする羽目になるから、やっぱり最初からExpress使ってた方がいいんだろうなあ。