public async Task TradesSubscriptionWorks()
        {
            using (var client = ClientsFactory.GetPolygonSockClient())
            {
                await connectAndAuthenticate(client);

                var waitObject = new AutoResetEvent(false);

                client.TradeReceived += (trade) =>
                {
                    Assert.Equal(SYMBOL, trade.Symbol);
                    waitObject.Set();
                };

                waitObject.Reset();
                client.SubscribeTrade(SYMBOL);

                if (_restClient.GetClockAsync().Result.IsOpen)
                {
                    Assert.True(waitObject.WaitOne(
                                    TimeSpan.FromSeconds(10)));
                }

                await client.DisconnectAsync();
            }
        }
        public async Task SeveralSubscriptionWorks()
        {
            using (var client = ClientsFactory.GetPolygonSockClient())
            {
                await connectAndAuthenticate(client);

                var waitObjects = new []
                {
                    new AutoResetEvent(false),
                    new AutoResetEvent(false)
                };

                client.TradeReceived += (trade) =>
                {
                    Assert.Equal(SYMBOL, trade.Symbol);
                    waitObjects[0].Set();
                };

                client.QuoteReceived += (quote) =>
                {
                    Assert.Equal(SYMBOL, quote.Symbol);
                    waitObjects[1].Set();
                };

                client.SubscribeTrade(SYMBOL);
                client.SubscribeQuote(SYMBOL);

                if (_restClient.GetClockAsync().Result.IsOpen)
                {
                    // ReSharper disable once CoVariantArrayConversion
                    Assert.True(WaitHandle.WaitAll(
                                    waitObjects, TimeSpan.FromSeconds(10)));
                }

                await client.DisconnectAsync();
            }
        }