code: boolean failure(Throwable failure) {
          State<T> oldState;
          synchronized (mutex) {
              if (state.isCompleted()) {
                  return false;
              }
              oldState = state;
              state = state.getFailureState(failure);
          }
          oldState.callFailureCallbacks(failure);
          return true;
      }
docs: To be called to set the failure exception
  
  @param failure the exception
  @return true if this result will be used (first result registered)