Without this you have to pull socket, localSocket, member and roomName
off the bag yourself and hand them to confirmExit — four chances to pass a
stale value, and a silent no-op when you do.
Never throws: a failed exit comes back as { ok: false, error } so a Leave
button can report why rather than appearing to work.
Leave the room from a headless surface.
Without this you have to pull
socket,localSocket,memberandroomNameoff the bag yourself and hand them toconfirmExit— four chances to pass a stale value, and a silent no-op when you do.Never throws: a failed exit comes back as
{ ok: false, error }so a Leave button can report why rather than appearing to work.