Please review my implementation of a simple When/Then (pseudo Promise) in javascript I'm hoping some folks can take a few minutes to review some code I was working on today.

https://gist.github.com/1115202

Essentially, I'm doing a lot of work in Node.js at the moment and I'm a big fan of Promises.

Since 99% of the work that I'm doing involves performing several asynchronous actions and then parsing the results, I wanted something a little simpler and more light-weight that some of the other Promise/Deferred/Futures libraries that are out there.

My aim with this is to have a simple when().then() format without having to instantiate a new Promise inside each function.

The usage is like this:

when(
    function(){ this.pass(1); }, 
    function(){ this.pass(2); }
)
.then(function(results){ 
    console.log( results ); 
});


In the Github gist I've linked to above, there are use cases near the bottom. Test case 1 uses timeouts, the 2nd test case uses several async http requests in Node.js and logs the total results at the end when all 3 have finished.

I'd love to hear any opinions good or bad, recommendations on how to make it better, etc.
I made The following edits:


Prevent the same when function from calling pass twice(therefore invalidating results)
Sends pass function as 1st argument to avoid var that = this
It stores the first pass arg only for simplicity instead of all arguments in results(easily switched)
Then function can't be called more then one
I removed the need for When and when functions(you could leave the separate functions for clarity if you wanted)
There is now only one method then and prop funcs


https://gist.github.com/1115319

Usage

when(
    function(pass){setTimeout(pass,3000)},
    function(pass){pass('2nd');}
)
.then(function(results){
    console.log(results);
})