diff --git a/packages/core/src/server.ts b/packages/core/src/server.ts index e277606948..1bfda5b6f0 100644 --- a/packages/core/src/server.ts +++ b/packages/core/src/server.ts @@ -53,7 +53,7 @@ export interface SessionData { workspace: WorkspaceIds socialStringsToUsers: Map - asyncRequests?: (() => Promise)[] + asyncRequests?: ((ctx: MeasureContext) => Promise)[] } /** diff --git a/server/middleware/src/triggers.ts b/server/middleware/src/triggers.ts index b2044c3524..357cf2ea18 100644 --- a/server/middleware/src/triggers.ts +++ b/server/middleware/src/triggers.ts @@ -179,7 +179,7 @@ export class TriggersMiddleware extends BaseMiddleware implements Middleware { } else { ctx.contextData.asyncRequests = [ ...(ctx.contextData.asyncRequests ?? []), - async () => { + async (ctx) => { // In case of async context, we execute both async and sync triggers as sync await this.processAsyncTriggers(ctx, triggerControl, findAll, txes, triggers) } diff --git a/server/server/src/client.ts b/server/server/src/client.ts index efdd27b22b..ccdd5416b8 100644 --- a/server/server/src/client.ts +++ b/server/server/src/client.ts @@ -251,8 +251,8 @@ export class ClientSession implements Session { onEnd = useReserveContext ? ctx.pipeline.context.adapterManager?.reserveContext?.(cid) : undefined const handleAyncs = async (): Promise => { try { - for (const r of (ctx.ctx.contextData as SessionData).asyncRequests ?? []) { - await r() + for (const r of asyncs) { + await r(ctx.ctx) } } finally { onEnd?.()