/
/
Cleaning up a virtual player left behind by a failed or cancelled creation was wrapped in a timeout, in two places. AsyncProcess.close() documents that an enclosing timeout is no reliable bound on a teardown that reaches it. Neither cleanup has anything running to wait for, so the bound guards nothing and is dropped in both; the retry on a teardown that actually raises stays.