public void Start(Action <string> onCompletion = null, CancellationToken token = default)
        {
            if (m_MatchmakingRequest != null && !m_MatchmakingRequest.IsDone)
            {
                throw new InvalidOperationException($"Cannot call {nameof(Start)} twice on the same {nameof(MatchmakingWrapper)}; it represents a single stateful operation.");
            }

            Completed         = onCompletion;
            CancellationToken = token;

            m_AssignmentText = null;

            // Create a new ticket (our custom data) to be passed in with our match request
            var ticket = new CreateTicketRequest
            {
                Attributes = BuildTicketAttributes(),
                Properties = BuildTicketProperties()
            };

            // Create a new match request
            m_MatchmakingRequest = new MatchmakingRequest(m_MatchmakingServiceUrl, ticket)
            {
                // Pass in our own non-default network settings (optional)
                GetTicketPollIntervalSeconds = 1.0f
            };

            m_MatchmakingRequest.Completed += OnMatchmakingComplete;
            m_MatchmakingRequest.SendRequest();
        }