From 5e843f6578f0ecfcd8058f3ac0f60dda7805849f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Jan 2026 09:12:36 +0000 Subject: [PATCH] fix: properly await async zap processing in subscription Changes processZapReceipt calls from forEach to Promise.all to ensure async DB operations complete before processing next batch of events. Prevents race conditions where zaps might not be properly stored in DB if multiple events arrive simultaneously. --- src/services/supporters.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/services/supporters.ts b/src/services/supporters.ts index f83581c..0573f09 100644 --- a/src/services/supporters.ts +++ b/src/services/supporters.ts @@ -125,8 +125,9 @@ function subscribeToZapReceipts() { const timeline = eventStore.timeline([{ kinds: [9735], limit: 1000 }]); // Process existing and new zap receipts - timeline.subscribe((events) => { - events.forEach(processZapReceipt); + timeline.subscribe(async (events) => { + // Process all events in parallel (DB handles deduplication) + await Promise.all(events.map((event) => processZapReceipt(event))); }); }