// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.// This module is browser compatible. import{ deferred }from"./deferred.ts"; exportclassDeadlineErrorextendsError{constructor(){super("Deadline");this.name="DeadlineError";}} /** * Create a promise which will be rejected with DeadlineError when a given delay is exceeded. */exportfunctiondeadline<T>(p:Promise<T>, delay:number):Promise<T>{const d =deferred<never>();const t =setTimeout(()=> d.reject(newDeadlineError()), delay);returnPromise.race([p, d]).finally(()=>clearTimeout(t));}