public async Task ConvertWriteClusterErrorToSessionExpiredError(string code)
            {
                var handlerMock = new Mock <IClusterErrorHandler>();
                var clusterConn =
                    new ClusterConnection(CreateConnectionWithMode(AccessMode.Write), Uri, handlerMock.Object);

                var inError  = ErrorExtensions.ParseServerException(code, null);
                var outError = await Record.ExceptionAsync(() => clusterConn.OnErrorAsync(inError));

                outError.Should().BeOfType <SessionExpiredException>();
                handlerMock.Verify(x => x.OnConnectionErrorAsync(Uri, inError), Times.Never);
                handlerMock.Verify(x => x.OnWriteError(Uri), Times.Once);
            }
            public async Task ConvertConnectionErrorToSessionExpired()
            {
                var handlerMock = new Mock <IClusterErrorHandler>();
                var clusterConn =
                    new ClusterConnection(CreateConnectionWithMode(AccessMode.Read), Uri, handlerMock.Object);

                var inError  = new ServiceUnavailableException("Connection error");
                var outError = await Record.ExceptionAsync(() => clusterConn.OnErrorAsync(inError));

                outError.Should().BeOfType <SessionExpiredException>();
                handlerMock.Verify(x => x.OnConnectionErrorAsync(Uri, inError), Times.Once);
                handlerMock.Verify(x => x.OnWriteError(Uri), Times.Never);
            }
            public async Task TreatsDatabaseUnavailableAsConnectionError()
            {
                var handlerMock = new Mock <IClusterErrorHandler>();
                var clusterConn =
                    new ClusterConnection(CreateConnectionWithMode(AccessMode.Read), Uri, handlerMock.Object);

                var inError  = new TransientException("Neo.TransientError.General.DatabaseUnavailable", "Store copying");
                var outError = await Record.ExceptionAsync(() => clusterConn.OnErrorAsync(inError));

                outError.Should().BeEquivalentTo(inError);

                handlerMock.Verify(x => x.OnConnectionErrorAsync(Uri, inError));
            }
            public async Task ConvertClusterErrorToClientError()
            {
                var handlerMock = new Mock <IClusterErrorHandler>();
                var clusterConn =
                    new ClusterConnection(CreateConnectionWithMode(AccessMode.Read), Uri, handlerMock.Object);

                var inError  = new ClientException("random error");
                var outError = await Record.ExceptionAsync(() => clusterConn.OnErrorAsync(inError));

                outError.Should().Be(inError);
                handlerMock.Verify(x => x.OnConnectionErrorAsync(Uri, inError), Times.Never);
                handlerMock.Verify(x => x.OnWriteError(Uri), Times.Never);
            }