code: final void orpush(CompletableFuture<?> b, BiCompletion<?, ?, ?> c) {
      if (c != null) {
        while (!tryPushStack(c)) {
          if (result != null) {
            lazySetNext(c, null);
            break;
          }
        }
        if (result != null)
          c.tryFire(SYNC);
        else
          b.unipush(new CoCompletion(c));
      }
    }
docs: Pushes completion to this and b unless either done. Caller should first check that result and
  b.result are both null.