diff --git a/packages/bentocache/src/cache/factory_runner.ts b/packages/bentocache/src/cache/factory_runner.ts index 5a73113..84536bf 100644 --- a/packages/bentocache/src/cache/factory_runner.ts +++ b/packages/bentocache/src/cache/factory_runner.ts @@ -137,7 +137,7 @@ export class FactoryRunner { * And immediately return the fallback value */ if (options.shouldSwr(hasGracedValue)) { - this.#runFactory({ key, factory, options, lockReleaser, isBackground: true }) + this.#runFactory({ key, factory, options, lockReleaser, isBackground: true, gracedValue }) throw new errors.E_FACTORY_SOFT_TIMEOUT(key) } diff --git a/packages/bentocache/tests/cache/factory_context.spec.ts b/packages/bentocache/tests/cache/factory_context.spec.ts index d2daa32..bb34103 100644 --- a/packages/bentocache/tests/cache/factory_context.spec.ts +++ b/packages/bentocache/tests/cache/factory_context.spec.ts @@ -110,14 +110,17 @@ test.group('Factory Context', () => { await sleep(100) + let gracedEntryValue; + const r1 = await cache.getOrSet({ key: 'foo', factory: ({ gracedEntry }) => { - assert.deepEqual(gracedEntry?.value, 'bar') - return gracedEntry?.value + gracedEntryValue = gracedEntry?.value + return gracedEntryValue }, }) + assert.deepEqual(gracedEntryValue, 'bar') assert.deepEqual(r1, 'bar') }) })