Promise of the in-flight Chrome launch. Settles exactly once for the
initial launch and is replaced whenever recoverBrowser runs. Awaited
inside handleRun (via awaitBrowser) so a run request that arrives
before Chrome is up waits the same amount of time it would have waited
for the synchronous launch — but daemon start/ping/status return as
soon as the socket is up. Decoupling Chrome from socket readiness is the
fix for the "Daemon did not start within Ns" timeout class on slow CI.
Usage
import { type DaemonState } from "lib/commands/daemon/server.ts";