#import <DOM/EventTarget.idl>
#import <DOM/EventHandler.idl>

// https://dom.spec.whatwg.org/#interface-AbortSignal
[Exposed=*]
interface AbortSignal : EventTarget {
    [NewObject] static AbortSignal abort(optional any reason);
    [Exposed=(Window,Worker), NewObject] static AbortSignal timeout([EnforceRange] unsigned long long milliseconds);
    [NewObject] static AbortSignal _any(sequence<AbortSignal> signals);

    readonly attribute boolean aborted;
    readonly attribute any reason;
    undefined throwIfAborted();

    attribute EventHandler onabort;
};
