function log(msg) { document.write(msg + '<br />'); } // using promises function finder(records){ var deferred = when.defer(); setTimeout(function () { records.push(3, 4); log('records found - resolving promise'); deferred.resolve(records); }, 100); return deferred.promise; } var promise = finder([1,2]); // wait setTimeout(function () { // when this is called the finder promise has already been resolved promise.then(function (records) { log('records received'); }); }, 1500);