Sidenotes:

Builder#build was synchronously (the bundles were created by concatenating strings). Now, with requirejs, it gets async.

Initially, I tried to avoid changing the workflow of Builder to be asynchronously. I came up with an idea of wrapping rjs output with an Stream (on rjs completion, it set the readable stream as readable) (it was using https://github.com/isaacs/readable-stream to support node 0.8). The idea worked just fine, because Builder could return an output synchronously, and the archiver (zipper) knew how to handle the asynchronous Stream data. Although, it turned out to be a problem for two reasons: (a) on certain places I needed to process the bundles (but, my own stream wrapper was able to chain those operations), (b) packer copies the same bundle into two different locations, when that happens both files reference the same data, after the first data is read by the zipper, the Stream drains out, when it tries to read the second file, the read gets stuck and thats a complicated problem to solve. I gave up and thought it was easier to change Builder to be async :P.

I had prepared the async change terrain with this previous commit 5c336d2.