Asynchronous 9P2000.L client.
Reconnection
Fids and byte-range locks are connection-scoped. The client records their replay state, reconnects with backoff, and restores that state before releasing blocked requests. Reorder-sensitive mutations retain one op-id across resends. Resends stop at the protocol retry horizon; expiry returns a disconnect error with an ambiguous outcome.
An op-id is local to one public mutation future and is not reusable after the future completes or is cancelled.
Dropping a future after a fid- or lock-state request is dispatched retires the connection that carried it. If that connection is still current, requests wait for reconnect and replay before resuming.
The negotiated message size is fixed for the logical session. Reconnect candidates must negotiate the same value.
Replay restores recorded fids and locks before the replacement connection
becomes live. An opened fid that no longer exists becomes an ESTALE
tombstone; its operations fail without affecting other fids. Failure to
restore a held lock terminates the logical session.