(ms: number, signal?: AbortSignal)
| 188 | } |
| 189 | |
| 190 | function sleep(ms: number, signal?: AbortSignal): Promise<void> { |
| 191 | return new Promise((resolve) => { |
| 192 | if (signal?.aborted) { |
| 193 | resolve(); |
| 194 | return; |
| 195 | } |
| 196 | let settled = false; |
| 197 | const finish = () => { |
| 198 | if (settled) return; |
| 199 | settled = true; |
| 200 | if (signal) { |
| 201 | signal.removeEventListener('abort', onAbort); |
| 202 | } |
| 203 | resolve(); |
| 204 | }; |
| 205 | const timer = setTimeout(finish, ms); |
| 206 | |
| 207 | function onAbort(): void { |
| 208 | clearTimeout(timer); |
| 209 | finish(); |
| 210 | } |
| 211 | |
| 212 | if (signal) { |
| 213 | signal.addEventListener('abort', onAbort, { once: true }); |
| 214 | } |
| 215 | }); |
| 216 | } |
| 217 | |
| 218 | function publishRetryEvent(event: RetryTelemetryEvent): void { |
| 219 | emitDiagnostic({ |
no test coverage detected