Promises are ideal for this behavior, you might have something like:
new Promise(function(resolve, reject){
asyncFn(param, function(err, result){
if(error){
return reject(error);
}
return resolve(result)
});
setTimeout(function(){reject('timeout')},10000)
}).then(doSomething);
ES6 Promise. , - bluebird, , - .
http://bluebirdjs.com/docs/api/timeout.html
, , .
,