/* * SPDX-FileCopyrightText: syuilo and misskey-project * SPDX-License-Identifier: AGPL-3.0-only */ const promiseRefs: Set>> = new Set(); /** * This tracks promises that other modules decided not to wait for, * and makes sure they are all settled before fully closing down the server. */ export function trackPromise(promise: Promise) { if (process.env.NODE_ENV !== 'test') { return; } const ref = new WeakRef(promise); promiseRefs.add(ref); promise.finally(() => promiseRefs.delete(ref)); } export async function allSettled(): Promise { await Promise.allSettled([...promiseRefs].map(r => r.deref())); }