Quick answer: Godot 4 RPC sent to a peer that's in process of disconnecting causing async error? Peer ID is valid for a brief window after disconnect - validate via has_multiplayer_peer.

Server detects disconnect; client RPC arrives; server processes; error.

Check peer state

if multiplayer.get_peers().has(id):
    multiplayer.rpc(id, method)

Skip if not present.

Or wrap in try

RPC may error; catch; log; continue.

Audit RPC paths

Each RPC's pre-send validation. Defensive.

“Peer lifecycle has windows. RPC code must handle.”

Build a SafeRPC wrapper that validates; logs failures; doesn't crash. Reusable.

Related reading