docs: public void reportFailure(E failureException) {
          assert failureException != null;
          connectionLock.lock();
          try {
              state = State.Failure;
              this.failureException = failureException;
              condition.signalAll();
          }
          finally {
              connectionLock.unlock();
          }
      }