code: public void requestFailed (Exception cause)
      {
          if (_chain != null) {
              _chain.requestFailed(cause);
  
          } else if (_invChain != null) {
              _invChain.requestFailed((cause instanceof InvocationException)
                  ? cause.getMessage()
                  : InvocationCodes.INTERNAL_ERROR);
  
          } else {
              Object[] logArgs = MoreObjects.firstNonNull(_logArgs, ArrayUtil.EMPTY_OBJECT);
              Object[] args;
              if (cause instanceof InvocationException) {
                  args = new Object[logArgs.length + 4];
                  args[args.length - 2] = "error";
                  args[args.length - 1] = cause.getMessage();
  
              } else {
                  args = new Object[logArgs.length + 3];
                  args[args.length - 1] = cause;
              }
              args[0] = "Resulting";
              args[1] = this;
              System.arraycopy(logArgs, 0, args, 2, logArgs.length);
              MoreObjects.firstNonNull(_log, log).warning("Request failed", args);
          }
      }
docs: Override this to handle a request failed in your own way.