File size: 728 Bytes
abcf568 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | export class StudioRunCancelledError extends Error {
readonly reason: string
constructor(reason: string = 'Run cancelled') {
super(reason)
this.name = 'StudioRunCancelledError'
this.reason = reason
}
}
export function isStudioRunCancelledError(error: unknown): error is StudioRunCancelledError {
return error instanceof StudioRunCancelledError
}
export function throwIfStudioRunCancelled(signal?: AbortSignal | null): void {
if (signal?.aborted) {
throw new StudioRunCancelledError(readAbortReason(signal))
}
}
export function readAbortReason(signal?: AbortSignal | null): string {
const reason = signal?.reason
return typeof reason === 'string' && reason.trim() ? reason : 'Run cancelled'
}
|