docs: public Throwable resolveException(ObjectNode response) {
  		ObjectNode errorObject = ObjectNode.class.cast(response.get(JsonRpcBasicServer.ERROR));
  		if (!hasNonNullObjectData(errorObject, JsonRpcBasicServer.DATA))
  			return createJsonRpcClientException(errorObject);
  		
  		ObjectNode dataObject = ObjectNode.class.cast(errorObject.get(JsonRpcBasicServer.DATA));
  		if (!hasNonNullTextualData(dataObject, JsonRpcBasicServer.EXCEPTION_TYPE_NAME))
  			return createJsonRpcClientException(errorObject);
  		
  		try {
  			String exceptionTypeName = dataObject.get(JsonRpcBasicServer.EXCEPTION_TYPE_NAME).asText();
  			String message = hasNonNullTextualData(dataObject, JsonRpcBasicServer.ERROR_MESSAGE) ? dataObject.get(JsonRpcBasicServer.ERROR_MESSAGE).asText() : null;
  			return createThrowable(exceptionTypeName, message);
  		} catch (Exception e) {
  			logger.warn("Unable to create throwable", e);
  			return createJsonRpcClientException(errorObject);
  		}
  	}