[Node.js] RangeError: Maximum call stack size exceeded

users がめっちゃいると RangeError: Maximum call stack size exceeded が発生して、途中で死ぬ。

async.eachSeries users, (user, next) ->
  user.save (error)->
    return next()
, (error) ->
  // ...

下記のように process.nextTick や setImmediate で囲ってあげると解決する。

async.eachSeries users, (user, next) ->
  process.nextTick ->
    user.save (error)->
      return next()
, (error) ->
  // ...

参考情報

Node.js – Maximum call stack size exceeded – Stack Overflow

'Maximum call stack size exceeded' using async.forEachLimit · Issue #75 · caolan/async