public async Task StartConnection_OnReadClose_IfConnectionIsOpen_CloseConnection()
        {
            // set the underlying connection to not auto close when it retrieves a close message
            // from the queue, leaving it up to the apollo client to do the close
            var socketClient = new MockClientConnection(autoCloseOnReadCloseMessage: false);
            var options      = new SubscriptionServerOptions <GraphSchema>();

            var provider     = new ServiceCollection().BuildServiceProvider();
            var apolloClient = new ApolloClientProxy <GraphSchema>(
                socketClient,
                options,
                new ApolloMessageConverterFactory(),
                null,
                false);

            var eventCalled = false;

            void ConnectionClosed(object sender, EventArgs e)
            {
                eventCalled = true;
            }

            apolloClient.ConnectionClosed += ConnectionClosed;

            // execute the connection sequence
            socketClient.QueueConnectionCloseMessage();
            await apolloClient.StartConnection();

            Assert.IsTrue(eventCalled, "Connection Closed Event Handler not called");
        }