cancel = (reason, prefix = '*') => {
      if (done) return disposed;
      done = true;
      rejectCancelled(reason || harden(new Error('Cancelled')));

      console.log(`${prefix} ${id}`);

      controllerForId.delete(id);
      for (const dependentContext of dependents.values()) {
        dependentContext.cancel(reason, ` ${prefix}`);
      }
      dependents.clear();

      // Execute all cancellation hooks and resolve a single `undefined` for them.
      resolveDisposed(Promise.all(hooks.map(hook => hook())).then(() => {}));

      return disposed;
    }
@param {Error} reason
@param {string} [prefix]