From 6c4982ae85bf73dba3a5f74fc0c9cface487cfa1 Mon Sep 17 00:00:00 2001 From: kenneth Date: Sat, 14 Feb 2026 00:44:47 +0000 Subject: [PATCH] fix: use Promise.allSettled for calendar fetching A transient error on one calendar (e.g. shared calendar with permission issues) no longer discards results from all other calendars. Co-authored-by: Ona --- packages/aris-source-apple-calendar/src/calendar-source.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/aris-source-apple-calendar/src/calendar-source.ts b/packages/aris-source-apple-calendar/src/calendar-source.ts index 43b241a..1a4ba33 100644 --- a/packages/aris-source-apple-calendar/src/calendar-source.ts +++ b/packages/aris-source-apple-calendar/src/calendar-source.ts @@ -98,7 +98,7 @@ export class CalendarSource implements FeedSource { const { start, end } = computeTimeRange(context.time, this.lookAheadDays) - const results = await Promise.all( + const results = await Promise.allSettled( calendars.map(async (calendar) => { const objects = await client.fetchCalendarObjects({ calendar, @@ -115,7 +115,9 @@ export class CalendarSource implements FeedSource { ) const allEvents: CalendarEventData[] = [] - for (const { objects, calendarName } of results) { + for (const result of results) { + if (result.status !== "fulfilled") continue + const { objects, calendarName } = result.value for (const obj of objects) { if (typeof obj.data !== "string") continue