void InitializeStream()
        {
            lock (Locker)
            {
                if (IsInitialized)
                {
                    return;
                }

                _filteredStream.AddCustomQueryParameter("omit_script", "true");

                //_filteredStream.KeepAliveReceived += async (o, e) =>
                //    await SendStatusUpdateAsync("Keep alive recieved...");
                //_filteredStream.LimitReached += async (o, e) =>
                //    await SendStatusUpdateAsync($"Limit receached, missed {e.NumberOfTweetsNotReceived:#,#} tweets...");
                //_filteredStream.JsonObjectReceived += async (o, e) =>
                //    await SendStatusUpdateAsync($"JSON recieved {e.Json}...");
                //_filteredStream.UnmanagedEventReceived += async (o, e) =>
                //    await SendStatusUpdateAsync($"Unexpected JSON message recieved {e.JsonMessageReceived}...");

                _filteredStream.DisconnectMessageReceived += OnDisconnectedMessageReceived;
                _filteredStream.MatchingTweetReceived     += OnMatchingTweetReceived;
                //_filteredStream.NonMatchingTweetReceived += OnNonMatchingTweetReceived;
                _filteredStream.StreamStarted += OnStreamStarted;
                _filteredStream.StreamStopped += OnStreamStopped;
                _filteredStream.StreamResumed += OnStreamResumed;
                _filteredStream.StreamPaused  += OnStreamPaused;
                _filteredStream.WarningFallingBehindDetected += OnFallingBehindDetected;

                IsInitialized = true;
            }
        }