fe4e553be3
waitForManagedBashJob raced job completion against a bare Bun.sleep(thresholdMs), which cannot be cancelled. When completion, abort, or steering won the race, the losing Bun.sleep timer stayed scheduled and ref'd, keeping Bun's event loop alive until the threshold expired — delaying SDK/headless shutdown and accumulating timers under fast command rates. Replace the Bun.sleep with a Promise.withResolvers settled by a cancellable setTimeout, and route every outcome (including the former no-signal early return) through one try/finally that clears the timer and removes the abort/steer listeners. Add a child-process regression test that runs the real auto-background path for a fast command against a 30s threshold and asserts the process exits promptly instead of being held for the full threshold. Fixes #7235