The result of .live(): an AsyncIterable (iterate locally) that also
exposes .observe(observer) (push form — crosses RPC). A class, not a
plain object, so the shim wraps it as a capability with observe
@expose-visible; [Symbol.asyncIterator] is symbol-keyed, so it stays
local and never crosses the wire.
The result of
.live(): an AsyncIterable (iterate locally) that also exposes.observe(observer)(push form — crosses RPC). A class, not a plain object, so the shim wraps it as a capability withobserve@expose-visible;[Symbol.asyncIterator]is symbol-keyed, so it stays local and never crosses the wire.