stuff = promise( 'anything that might take a while' ); ... do anything else that you can before you need the stuff this = promise( 'read a file' ); that = promise( 'fetch something from a remote system' ); theOther = promise( 'query data from the DB' ); ... perhaps check to see if stuff is available if( !stuff->ready? ) doSomethingElse(); ... ... if any of the four components isn't ready the statement blocks until it is. ... maybe it needs a timeout either collectively or individually ... but that depends what else you might do at this point in the code; if anything. combine( this, that, theOther, stuff );