mirror of
https://github.com/morluto/rea.git
synced 2026-11-06 06:46:10 +00:00
fix(cancellation): retain caller reasons across digest and startup
This commit is contained in:
1 parent
9140deae63
commit
f2fa951c00
5 files changed
+99
-20
No files matched your search
@@ -1057,7 +1057,11 @@ export const digestFile = async (
|
||||
remainingMs,
|
||||
);
|
||||
const abort = (): void => {
|
||||
stream.destroy(new AnalysisCancelledError("artifact_digest"));
|
||||
stream.destroy(
|
||||
new AnalysisCancelledError("artifact_digest", {
|
||||
cause: signal?.reason,
|
||||
}),
|
||||
);
|
||||
};
|
||||
const cleanup = (): void => {
|
||||
clearTimeout(timer);
|
||||
@@ -1066,7 +1070,11 @@ export const digestFile = async (
|
||||
if (signal?.aborted) {
|
||||
cleanup();
|
||||
stream.destroy();
|
||||
rejectDigest(new AnalysisCancelledError("artifact_digest"));
|
||||
rejectDigest(
|
||||
new AnalysisCancelledError("artifact_digest", {
|
||||
cause: signal.reason,
|
||||
}),
|
||||
);
|
||||
return;
|
||||
}
|
||||
signal?.addEventListener("abort", abort, { once: true });
|
||||
@@ -1139,7 +1147,9 @@ const statWithDeadline = (
|
||||
timeoutMs: number,
|
||||
): Promise<Stats> => {
|
||||
if (signal?.aborted)
|
||||
return Promise.reject(new AnalysisCancelledError("artifact_digest"));
|
||||
return Promise.reject(
|
||||
new AnalysisCancelledError("artifact_digest", { cause: signal.reason }),
|
||||
);
|
||||
return new Promise<Stats>((resolveStat, rejectStat) => {
|
||||
let settled = false;
|
||||
const finish = (outcome: Result<Stats, unknown>): void => {
|
||||
@@ -1151,7 +1161,13 @@ const statWithDeadline = (
|
||||
else rejectStat(outcome.error);
|
||||
};
|
||||
const abort = (): void =>
|
||||
finish(err(new AnalysisCancelledError("artifact_digest")));
|
||||
finish(
|
||||
err(
|
||||
new AnalysisCancelledError("artifact_digest", {
|
||||
cause: signal?.reason,
|
||||
}),
|
||||
),
|
||||
);
|
||||
const timer = setTimeout(
|
||||
() =>
|
||||
finish(
|
||||
|
||||
Reference in new issue
Block a user