@@ -1771,6 +1771,7 @@ to <a for=AbortSignal>signal abort</a> on <a>this</a>'s <a for=AbortController>s
17711771[Exposed=*]
17721772interface AbortSignal : EventTarget {
17731773 [NewObject] static AbortSignal abort(optional any reason);
1774+ [NewObject] static AbortSignal timeout([EnforceRange] unsigned long long milliseconds);
17741775
17751776 readonly attribute boolean aborted;
17761777 readonly attribute any reason;
@@ -1784,6 +1785,11 @@ interface AbortSignal : EventTarget {
17841785 <dd> Returns an {{AbortSignal}} instance whose <a for=AbortSignal>abort reason</a> is set to
17851786 <var> reason</var> if not undefined; otherwise to an "{{AbortError!!exception}} " {{DOMException}} .
17861787
1788+ <dt><code> AbortSignal . <a method for=AbortSignal lt=timeout(milliseconds)>timeout</a> (<var> milliseconds</var> )</code>
1789+ <dd> Returns an {{AbortSignal}} instance which will be aborted in <var> milliseconds</var>
1790+ milliseconds. Its <a for=AbortSignal>abort reason</a> will be set to a
1791+ "{{TimeoutError!!exception}} " {{DOMException}} .
1792+
17871793 <dt><code><var> signal</var> . <a attribute for=AbortSignal>aborted</a> </code>
17881794 <dd> Returns true if <var> signal</var> 's {{AbortController}} has signaled to abort; otherwise false.
17891795
@@ -1836,6 +1842,31 @@ are:
18361842 <li> Return <var> signal</var> .
18371843</ol>
18381844
1845+ <p> The static <dfn method for=AbortSignal><code>timeout(<var>milliseconds</var>)</code></dfn> method
1846+ steps are:
1847+
1848+ <ol>
1849+ <li><p> Let <var> signal</var> be a new {{AbortSignal}} object.
1850+
1851+ <li><p> Let <var> global</var> be <var> signal</var> 's <a>relevant global object</a> .
1852+
1853+ <li>
1854+ <p> <a>Run steps after a timeout</a> given <var> global</var> , "<code> AbortSignal-timeout</code> ",
1855+ <var> milliseconds</var> , and the following step:</p>
1856+
1857+ <ol>
1858+ <li><p> <a>Queue a global task</a> on the <a>timer task source</a> given <var> global</var> to
1859+ <a for=AbortSignal>signal abort</a> given <var> signal</var> and a new
1860+ "{{TimeoutError!!exception}} " {{DOMException}} .
1861+ </ol>
1862+
1863+ <p> For the duration of this timeout, if <var> signal</var> has any event listeners registered for
1864+ its {{AbortSignal/abort}} event, there must be a strong reference from <var> global</var> to
1865+ <var> signal</var> .
1866+
1867+ <li><p> Return <var> signal</var> .
1868+ </ol>
1869+
18391870<p> The <dfn attribute for=AbortSignal>aborted</dfn> getter steps are to return true if <a>this</a>
18401871is [=AbortSignal/aborted=] ; otherwise false.
18411872
0 commit comments