CoffeeScriptでasync.js

node.jsでasync.jsを使って非同期処理を書いてると、CoffeeScriptの方が奇麗かも、と思ったので試しに書いてみることに。
package.jsonからバージョンを取得して表示するだけの関数です。
環境:MacOS 10.7.3 / nodebrew 0.5.0 / node 0.6.13

JavaScript

var fs = require('fs')
  , async = require('async')
  ;

async.waterfall([
    function (callback) {
      fs.readFile('package,json', callback);
    }
  , function (data, callback) {
      callback(null, JSON.parse(data).version);
    }
  ]
, function (err, version) {
    if (err) throw err;
    console.log('version: %s', version);
});

CoffeeScript

fs = require 'fs'
async = require 'async'

do ->
  async.waterfall [
    (callback) -> fs.readFile 'package.json', callback; return
  , (data, callback) -> callback null, JSON.parse(data).version; return
  ], (err, version) ->
    throw err if err
    console.log 'version: %s', version
    return
  return


CoffeeScriptの方はアローが並んで奇麗かなーと思ったけど、そうでもなかった……


追記:
async.jsを書きたかったのでこう書いたけれどpackage.jsonを読み込むだけなら

var data = require('package');

だけでおkなのです。