function makePromise() { return new Promise(function(resolve, reject){    setTimeout(function(){ resolve('hey!') }, 500); }); } function gambiwrap(p) { if (!gambiwrap.cachedResult) { console.log("Promise não resolvida..."); return p.then(function(r) { gambiwrap.cachedResult = r; }) } else { console.log("Já resolveu essa porra"); return gambiwrap.cachedResult; } } console.log("primeira chamada...") var p = gambiwrap(makePromise()); console.log(p); console.log("Agora chama vc essa porra com p = gambiwrap(makePromise())");