docs: public <V> V invoke(Callable<V> c) throws Exception {
          if (!byPass) {
              if (!allowRequest()) {
                  throw mapException(new CircuitBreakerException());
              }
  
              try {
                  isAttemptLive = true;
                  V result = c.call();
                  close();
                  return result;
              } catch (Throwable cause) {
                  handleFailure(cause);
              }
              throw new IllegalStateException("not possible");
          }
          else {
              return c.call();
          }
      }