()
| 279 | let timeoutId: NodeJS.Timeout | null = null |
| 280 | let abortHandler: (() => void) | null = null |
| 281 | const cleanup = () => { |
| 282 | server?.removeAllListeners() |
| 283 | // Defensive: removeAllListeners() strips the error handler, so swallow any late error during close |
| 284 | server?.on('error', () => {}) |
| 285 | server?.close() |
| 286 | server = null |
| 287 | if (timeoutId) { |
| 288 | clearTimeout(timeoutId) |
| 289 | timeoutId = null |
| 290 | } |
| 291 | if (abortSignal && abortHandler) { |
| 292 | abortSignal.removeEventListener('abort', abortHandler) |
| 293 | abortHandler = null |
| 294 | } |
| 295 | } |
| 296 | return new Promise<string>((resolve, reject) => { |
| 297 | let resolved = false |
| 298 | const resolveOnce = (v: string) => { |
no test coverage detected