js pattern for async calls
var future = function(d) {
var obj = {};
obj.val = 0;
setTimeout(function(){ obj.val=d;}, 5000);
return obj;
}
var result = future(4);
console.log(result.val) // returns 0
// after 5 seconds
console.log(result.val) // returns 4