public void Test_HandleBad_WritesFlagAndWrapsError()
        {
            var bad = new BadRequestWrapper
            {
                Exception = new DivideByZeroException()
            };
            var handlingContext = new HandlingContext(Mock.Of <HttpContext>(), Mock.Of <Encoding>(), Mock.Of <RequestDelegate>());

            requestHandlerMock.Setup(x => x.GetError(It.IsAny <DivideByZeroException>()))
            .Returns(new Error <object>());

            var result = requestHandlerMock.Object.HandleBad(bad, handlingContext);

            handlingContext.WriteResponse.Should().BeTrue();
            result.Should().NotBeNull();
            requestHandlerMock.Verify(x => x.GetError(It.IsAny <DivideByZeroException>()));
            requestHandlerMock.Verify(x => x.HandleBad(It.IsAny <BadRequestWrapper>(), It.IsAny <HandlingContext>()));
        }
        protected internal virtual JsonServerResponseWrapper HandleBad(BadRequestWrapper badRequestWrapper, HandlingContext context)
        {
            log.LogTrace($"{nameof(HandleBad)}: converting exception to json response");
            context.WriteResponse = true;
            var error         = GetError(badRequestWrapper.Exception);
            var errorResponse = new ErrorResponse <object>
            {
                Error = new Error <object>
                {
                    Code    = error.Code,
                    Message = error.Message,
                    Data    = error.GetData()
                }
            };
            var value = JToken.FromObject(errorResponse, headerJsonRpcSerializer.Serializer);

            return(new JsonServerResponseWrapper(value, null, null));
            // TODO any cases when need to pass through?
            // TODO it can break protocol because we can not distinguish between bad rpc request and absense of rpc route/action, for example
        }