I pushed out a 0.9.3 release of Q with a few bug fixes that I thought were fairly critical, among other minor changes:
- Add the ability to give `Q.timeout`'s errors a custom error message. #270 @jgrenon
- Fix Q's call-stack busting behavior in Node.js 0.10, by switching from `process.nextTick` to `setImmediate`. #254 #259
- Fix Q's behavior when used with the Mocha test runner in the browser, since Mocha introduces a fake `process` global without a `nextTick` property. #267
- Fix some, but not all, cases wherein Q would give false positives in its unhandled rejection detection (#252). A fix for other cases (#238) is hopefully coming soon, and any help with that is appreciated---I couldn't figure out a fix for it myself.
- Made `Q.promise` throw early if given a non-function.
---
Other things we are looking forward to fixing soon, presumably in 0.9.4, can be found at
https://github.com/kriskowal/q/issues?labels=&milestone=9&page=1&state=open
As you can see, most of them center around unhandled-rejection tracking. Since introducing console output of unhandled rejections in 0.9.0, some bugs in our tracking code have become more prominent, and we're scrambling to both fix them and to give more control over the process in general. The API is being sketched in
https://github.com/kriskowal/q/issues/265 and will probably look something like:
Q.getUnhandledReasons();
Q.resetUnhandledTracking();
Q.stopUnhandledTracking();
---
Other things we are actively working on include compliance with the almost-finished Promises/A+ 1.1 spec, which codifies many edge-cases related to the process of assimilating non-Q "thenables," and also better long stack-trace support, which you can see a demo of at
https://gist.github.com/domenic/5325002