Q is an implementation of Promises for JavaScript. It is a system for handling sequential execution of code in an asynchronous environment, for when execution of one function needs to wait for the results of another.
How to wait for 2+ asynchronous responses on NodeJS (CommonJS Promises) | Erick Ruiz de Chavez