export const TASK_CANCELATION_NAME = "TaskCancelation";
/**
* Returns true if the object passed to it is a TaskCancelation error.
* If you call `someTask.perform().catch(...)` or otherwise treat
* a {@linkcode TaskInstance} like a promise, you may need to
* handle the cancelation of a TaskInstance differently from
* other kinds of errors it might throw, and you can use this
* convenience function to distinguish cancelation from errors.
*
* ```js
* click() {
* this.myTask.perform().catch(e => {
* if (!didCancel(e)) { throw e; }
* });
* }
* ```
*
* @param {Object} error the caught error, which might be a TaskCancelation
* @returns {Boolean}
*/
export function didCancel(e) {
return e && e.name === TASK_CANCELATION_NAME;
}
export const CANCEL_KIND_EXPLICIT = "explicit";
export const CANCEL_KIND_YIELDABLE_CANCEL = "yielded";
export const CANCEL_KIND_LIFESPAN_END = "lifespan_end";
export const CANCEL_KIND_PARENT_CANCEL = "parent_cancel";
export class CancelRequest {
constructor(kind, reason) {
this.kind = kind;
this.reason = reason;
this.promise = new Promise((resolve) => {
this.finalize = resolve;
});
}
}