decorio
Version:
First-class ECMAScript decorators for caching, binding, and concurrency patterns
2 lines (1 loc) • 437 B
JavaScript
import{decorate as a}from"../internal/index.js";class c extends Error{constructor(r){super(),this.name="TimeoutExceededError",this.message=`timeout ${r}ms exceeded`}}n.signal=void 0;function n(e){return(r,i)=>a(r,i,l=>function(...s){const o=new AbortController,u=setTimeout(()=>{o.abort(new c(e))},e);let t;try{n.signal=o.signal,t=l.apply(this,s)}finally{n.signal=void 0}return t.finally(()=>{clearTimeout(u)}),t})}export{n as timeout};