/// <param name="data">Key-value pairs, which will overwrite any existing data for these keys. Presumed to be available to all lobby members but not publicly.</param>
if(!ShouldUpdateData(()=>{UpdatePlayerRelayInfoAsync(allocationId,connectionInfo,onComplete);},onComplete,true))// Do retry here since the RelayUtpSetup that called this might be destroyed right after this.
RelayCode=lobby.Data?.ContainsKey("RelayCode")==true?lobby.Data["RelayCode"].Value:null,// By providing RelayCode through the lobby data with Member visibility, we ensure a client is connected to the lobby before they could attempt a relay connection, preventing timing issues between them.
State=lobby.Data?.ContainsKey("State")==true?(LobbyState)int.Parse(lobby.Data["State"].Value):LobbyState.Lobby,// TODO: Consider TryParse, just in case (and below). Although, we don't have fail logic anyway...