code: protected boolean fail(Throwable e) {
          if (done.compareAndSet(false, true)) {
              onErrorCore(e);
              return true;
          }
          return false;
      }
docs: Try to move into an error state.
  @param e
  @return true if succeded, false if this observable has already terminated