import { describe, expect, it } from "bun:test"; import { PromiseTimedOutError, promiseTimeout } from "./promiseTimeout"; describe("promiseTimeout", () => { it("promise resolves within timeout, returns value", () => { expect( promiseTimeout( wait(1).then(() => 2), 2, ), ).resolves.toBe(2); }); it("promise does not resolve within timeout, throws PromiseTimedOutError", () => { expect( promiseTimeout( wait(2).then(() => 2), 1, ), ).rejects.toThrow(PromiseTimedOutError); }); }); function wait(ms: number) { return new Promise((resolve) => { setTimeout(resolve, ms); }); }