Limiting Q promise concurrency in JavaScript
Your code looks good to me. Promises/A are a great pattern - however it can be hard to grasp in the beginning, I personally still got problems in understanding the Q library and Promises/A spec to wrap my head around

Your implementation looks familiar to control flow patterns presented here:
http://book.mixu.net/node/ch7.html

Here is another nice presentation on Promises and control flow issues:
http://trevorburnham.com/presentations/flow-control-with-promises/#/

and here is a list of other Promise/A spec implementations:

JQuery


http://api.jquery.com/promise The #1 choice in jQuery-land


Promises/A+


http://github.com/kriskowal/ The #1 choice in Node-land
http://github.com/tildeio/rsvp.js The most lightweight choice
http://github.com/cujojs/when The speediest choice
http://github.com/promises-aplus/promises-spec/blob/master/implementations.md