/// <summary>
        /// Attempts to create a new Janus session. This is the first step to do anything
        /// with the Janus WebRTC or other features.
        /// </summary>
        /// <returns>A non-zero session ID. A zero value indicates a failure.</returns>
        private async Task <ulong> CreateSession(CancellationToken ct)
        {
            _logger.LogDebug("Creating Janus session...");

            RestClient client = new RestClient(_serverUrl);

            client.UseNewtonsoftJson();

            // Create session.
            var createSessionReq = new JanusRequest {
                janus = JanusOperationsEnum.create
            };
            var sessReq = new RestRequest(string.Empty, Method.POST, DataFormat.Json);

            sessReq.AddJsonBody(createSessionReq);
            var sessResp = await client.ExecutePostAsync <JanusResponse>(sessReq, ct).ConfigureAwait(false);

            ulong sessionID = sessResp.Data.data.id;

            _logger.LogDebug($"Janus CreateSession Result={sessResp.Data.janus}.");
            //_logger.LogDebug($"Transaction={sessResp.Data.transaction}.");
            //_logger.LogDebug($"SessionID={sessionID}.");

            return(sessionID);
        }
        /// <summary>
        /// Closes and destroys a Janus session allowing the server to free any
        /// resources or plugins attached to it.
        /// </summary>
        public async Task DestroySession()
        {
            RestClient client = new RestClient(_serverUrl);

            client.UseNewtonsoftJson();

            var destroyReqBody = new JanusRequest {
                janus = JanusOperationsEnum.destroy
            };
            var destroyReq = new RestRequest(_sessionID.ToString(), Method.POST, DataFormat.Json);

            destroyReq.AddJsonBody(destroyReqBody);
            var destroyResp = await client.ExecutePostAsync <JanusResponse>(destroyReq).ConfigureAwait(false);

            _logger.LogDebug($"Destroy response: {destroyResp.Data.janus}.");
        }