diff --git a/packages/backend/src/misc/promise-tracker.ts b/packages/backend/src/misc/promise-tracker.ts index 1194f641b5..d4411df17c 100644 --- a/packages/backend/src/misc/promise-tracker.ts +++ b/packages/backend/src/misc/promise-tracker.ts @@ -8,20 +8,23 @@ import { coreLogger } from '@/boot/coreLogger.js'; const backgroundLogger = coreLogger.createSubLogger('background'); const promiseRefs: Set>> = new Set(); -export function trackTask(task: () => Promise): void { - trackPromise(task()); +export function trackTask(task: () => Promise): Promise { + const promise = task(); + return trackPromise(promise); } /** * This tracks promises that other modules decided not to wait for, * and makes sure they are all settled before fully closing down the server. + * Returns the promise for chaining. */ -export function trackPromise(promise: Promise) { +export function trackPromise(promise: Promise): Promise { const ref = new WeakRef(promise); promiseRefs.add(ref); promise .catch(err => backgroundLogger.error('Unhandled error in tracked background task:', { err })) .finally(() => promiseRefs.delete(ref)); + return promise; } export async function allSettled(): Promise {