openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
40 lines (39 loc) • 1.61 kB
JavaScript
//#region extensions/matrix/src/matrix/startup-abort.ts
function createMatrixStartupAbortError() {
const error = /* @__PURE__ */ new Error("Matrix startup aborted");
error.name = "AbortError";
return error;
}
function throwIfMatrixStartupAborted(abortSignal) {
if (abortSignal?.aborted === true) throw createMatrixStartupAbortError();
}
function isMatrixStartupAbortError(error) {
return error instanceof Error && error.name === "AbortError";
}
async function awaitMatrixStartupWithAbort(promise, abortSignal) {
if (!abortSignal) return await promise;
if (abortSignal.aborted) throw createMatrixStartupAbortError();
return await new Promise((resolve, reject) => {
const onAbort = () => {
abortSignal.removeEventListener("abort", onAbort);
reject(createMatrixStartupAbortError());
};
abortSignal.addEventListener("abort", onAbort, { once: true });
promise.then((value) => {
abortSignal.removeEventListener("abort", onAbort);
resolve(value);
}, (error) => {
abortSignal.removeEventListener("abort", onAbort);
reject(toLintErrorObject(error, "Non-Error rejection"));
});
});
}
function toLintErrorObject(value, fallbackMessage) {
if (value instanceof Error) return value;
if (typeof value === "string") return new Error(value);
const error = new Error(fallbackMessage, { cause: value });
if (typeof value === "object" && value !== null || typeof value === "function") Object.assign(error, value);
return error;
}
//#endregion
export { throwIfMatrixStartupAborted as i, createMatrixStartupAbortError as n, isMatrixStartupAbortError as r, awaitMatrixStartupWithAbort as t };