code: protected boolean setException(Throwable throwable) {
      boolean result = sync.setException(checkNotNull(throwable));
      if (result) {
        executionList.execute();
      }
      return result;
    }
docs: Subclasses should invoke this method to set the result of the computation
  to an error, {@code throwable}.  This will set the state of the future to
  {@link AbstractFuture.Sync#COMPLETED} and invoke the listeners if the
  state was successfully changed.
  
  @param throwable the exception that the task failed with.
  @return true if the state was successfully changed.