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'
}