Latch call exit before any await in fenced transfer cleanup

In a warm transfer with durable, fenced recovery, local teardown and recovery must never both own the same rooms and outbound leg. Reviews found three gaps. First, a late provider "unavailable" or "left" callback checked only the terminal outcome, which stays unset after a failed terminal write, and so started local cleanup in parallel with recovery. Second, an untracked store write had no deadline and blocked caller-departure cancellation. Third, the claim was finished while a deferred cleanup task still ran, so its later calls lost the fence and left resources needing retries forever. Set the exit latch as the first synchronous statement, make every state-changing callback check it, run terminal writes as tracked tasks with a bounded wait, and keep the claim cleanup-eligible while any transfer attempt is nonterminal.

Applies when: call transfers span local async teardown and a durable lease-fenced recovery worker. Keywords: LiveKit warm transfer cancellation late callback fencing lease recovery cleanup ownership asyncio shield terminal write