From 6621c45be8e486d72f385949394f92c8b9eae9ca Mon Sep 17 00:00:00 2001 From: nmemmert Date: Tue, 22 Sep 2026 08:10:58 -0400 Subject: [PATCH] Guard startup scheduler calls against unhandled promise rejections; v2.0.42 Replace bare `void fn()` with `fn().catch(err => console.error(...))` for all four startup-time scheduler invocations so an unexpected rejection cannot crash the Node.js process (which exits on unhandled rejections in v15+). Co-Authored-By: Claude Sonnet 4.6 --- package.json | 2 +- server.js | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 32db0a1..7a652f1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "siteforge", "private": true, - "version": "2.0.41", + "version": "2.0.42", "type": "module", "scripts": { "dev": "vite", diff --git a/server.js b/server.js index b395868..a9fc675 100644 --- a/server.js +++ b/server.js @@ -191,7 +191,9 @@ Promise.all([ console.error('[study-reminders] failed to schedule reminders:', err) }) }, 60 * 60 * 1000) - void scheduleStudyReminders(sendStudyReminderEmail) + scheduleStudyReminders(sendStudyReminderEmail).catch(err => { + console.error('[study-reminders] failed to schedule reminders:', err) + }) // Send re-engagement emails to inactive study users every hour setInterval(() => { @@ -199,7 +201,9 @@ Promise.all([ console.error('[study-reengagement] failed to schedule emails:', err) }) }, 60 * 60 * 1000) - void scheduleReengagementEmails(sendStudyReengagementEmail) + scheduleReengagementEmails(sendStudyReengagementEmail).catch(err => { + console.error('[study-reengagement] failed to schedule emails:', err) + }) // Send weekly lesson digest emails every hour (only actually fires every 7 days per user) setInterval(() => { @@ -207,7 +211,9 @@ Promise.all([ console.error('[study-digest] failed to schedule weekly digest:', err) }) }, 60 * 60 * 1000) - void scheduleWeeklyDigestEmails(sendStudyWeeklyDigestEmail) + scheduleWeeklyDigestEmails(sendStudyWeeklyDigestEmail).catch(err => { + console.error('[study-digest] failed to schedule weekly digest:', err) + }) // Check for a scheduled series transition every hour setInterval(() => { @@ -215,7 +221,9 @@ Promise.all([ console.error('[series-scheduler] error:', err) }) }, 60 * 60 * 1000) - void runScheduledSeriesTransition() + runScheduledSeriesTransition().catch(err => { + console.error('[series-scheduler] error:', err) + }) app.listen(PORT, () => { logResendEmailAlignmentWarnings()