code: public void failure(Throwable failure) {
          try {
              lock.lock();
              this.failure = failure;
              notifyHaveResult();
          }
          finally {
              lock.unlock();
          }
      }
docs: Notify about the failure, occured during asynchronous operation
  execution.
  
  @param failure