void StartQosPing(string mmServiceURL, string multiplayFleetID, CancellationToken token = default)
        {
            OnStateChanged(MatchmakingState.QosPing);
            m_QosPing = new QosPingAsyncWrapper(m_QosServers);

            m_QosPing.Start(qosResults =>
            {
                if (token.IsCancellationRequested)
                {
                    Debug.Log("Qos Ping Cancelled");
                    OnStateChanged(MatchmakingState.Idle);
                    return;
                }

                if (qosResults == null || qosResults.Count == 0)
                {
                    Debug.LogError($"Qos Pinging Failed - No valid results found for {multiplayFleetID}");
                    OnStateChanged(MatchmakingState.Idle);
                    return;
                }

                m_QosResults = qosResults;
                QosConnector.Instance.RegisterProvider(() => m_QosResults);

                m_QosPing.Dispose();

                // Move on to start matchmaking
                SendMatchRequest(mmServiceURL, token);
            });
        }
        IEnumerator DoQosAsync()
        {
            // Qos Discovery - Find servers to ping
            var qosDiscovery = new QosDiscoveryAsyncWrapper();

            yield return(qosDiscovery.StartEnumerator(m_FleetId));

            var servers = qosDiscovery.Servers;

            if (servers == null || servers.Length == 0)
            {
                Debug.LogWarning("Qos was requested, but no qos servers could be found.");
                yield break;
            }

            // Qos Pings - Ping servers for info
            var qosPinger = new QosPingAsyncWrapper(servers);

            yield return(qosPinger.StartEnumerator());

            m_QosResults = qosPinger.QosResults;

            if (m_QosResults == null || m_QosResults.Count == 0)
            {
                Debug.LogWarning("Qos was requested, but no valid qos results were returned.");
            }
            else
            {
                QosConnector.Instance.RegisterProvider(() => m_QosResults);
            }
        }