UNPKG

@worker-tools/deno-kv-storage

Version:

An implementation of the StorageArea (1,2,3) interface for Deno with an extensible system for supporting various database backends.

18 lines (15 loc) 504 B
import { deferred } from "./deferred.js"; export class DeadlineError extends Error { constructor() { super("Deadline"); this.name = "DeadlineError"; } } /** * Create a promise which will be rejected with DeadlineError when a given delay is exceeded. */ export function deadline<T>(p: Promise<T>, delay: number): Promise<T> { const d = deferred<never>(); const t = setTimeout(() => d.reject(new DeadlineError()), delay); return Promise.race([p, d]).finally(() => clearTimeout(t)); }