diff --git a/api-server/server/utils/in-memory-cache.js b/api-server/server/utils/in-memory-cache.js index 4fc280c85d..d80a33814b 100644 --- a/api-server/server/utils/in-memory-cache.js +++ b/api-server/server/utils/in-memory-cache.js @@ -18,23 +18,20 @@ function InMemoryCache(initialValue, reportError) { return typeof value !== 'undefined' ? value : null; }, - async update(fn) { - let maybePromisedValue; + update(fn) { try { - maybePromisedValue = fn(); + const value = fn(); + if (isPromiseLike(value)) { + return value.then(value => cache.set(cacheKey, value)); + } else { + cache.set(cacheKey, value); + } } catch (e) { const errMsg = `InMemoryCache > update > caught: ${e.message}`; e.message = errMsg; reportError(e); - return null; - } - if (isPromiseLike(maybePromisedValue)) { - return maybePromisedValue.then(value => cache.set(cacheKey, value)); - } else { - const value = maybePromisedValue; - cache.set(cacheKey, value); - return null; } + return null; }, clear() { diff --git a/api-server/server/utils/in-memory-cache.test.js b/api-server/server/utils/in-memory-cache.test.js index c0954f5f77..a16c85d8ff 100644 --- a/api-server/server/utils/in-memory-cache.test.js +++ b/api-server/server/utils/in-memory-cache.test.js @@ -35,7 +35,8 @@ describe('InMemoryCache', () => { it('can handle promises correctly', done => { const cache = inMemoryCache(before, reportErrorStub); - cache.update(() => new Promise(resolve => resolve(after))); + const promisedUpdate = () => new Promise(resolve => resolve(after)); + cache.update(promisedUpdate); // because async setImmediate(() => { expect(cache.get()).toBe(after);