Promise-based sleep helper
(ms: number, signal?: AbortSignal)
| 1359 | |
| 1360 | /** Promise-based sleep helper */ |
| 1361 | private sleep(ms: number, signal?: AbortSignal): Promise<void> { |
| 1362 | if (signal?.aborted) { |
| 1363 | return Promise.resolve(); |
| 1364 | } |
| 1365 | |
| 1366 | return new Promise((resolve) => { |
| 1367 | const timeout = setTimeout(() => { |
| 1368 | signal?.removeEventListener("abort", onAbort); |
| 1369 | resolve(); |
| 1370 | }, ms); |
| 1371 | |
| 1372 | const onAbort = () => { |
| 1373 | clearTimeout(timeout); |
| 1374 | signal?.removeEventListener("abort", onAbort); |
| 1375 | resolve(); |
| 1376 | }; |
| 1377 | |
| 1378 | signal?.addEventListener("abort", onAbort, { once: true }); |
| 1379 | }); |
| 1380 | } |
| 1381 | |
| 1382 | /** |
| 1383 | * Delete a Coder workspace, retrying across transient build states. |