Q is a library that implements the standard and has some extra helpers. Q works in the browser and in node.js.
Q was designed to provide a robust way to provide you ways to write asynchronous code cleanly.
If a function cannot return a value or throw an exception without blocking, it can return a promise instead. A promise is an object that represents the return value or the thrown exception that the function may eventually provide. A promise can also be used as a proxy for a remote object to overcome latency.
You can read the specifications for Q at Promises A+, which aims to clarify “the behavioral clauses of the Promises/A proposal, extending it to cover de facto behaviors and omitting parts that are underspecified or problematic.”
You use deferreds and promises in ways similar to the ways you would use them in jQuery. However, Q has some important features.