function memoizedPromise(fn) { var cache = {}; return function() { var argsStr = JSON.stringify(arguments); if (cache[argsStr]) { return Promise.resolve(cache[argsStr]); } else { return fn.apply(null, arguments).then(function(result) { cache[argsStr] = result; return result; }); } } }