Path: blob/master/src/packages/util/async-utils.test.ts
1540 views
import { once } from "./async-utils";1import { EventEmitter } from "events";23describe("test once timing out due to close", () => {4class Obj extends EventEmitter {}5it("creates object, waits for event and has it work fine", async () => {6const obj = new Obj();7const w = once(obj, "ready");8obj.emit("ready");9await w;10});1112it("creates object, waits for an event, but instead gets closed", async () => {13const obj = new Obj();14const w = once(obj, "ready");15obj.emit("closed");16try {17await w;18} catch (err) {19expect(`${err}`).toContain(`not emitted before "closed"`);20// timeout error, though it's really due to "close"21expect(err.code).toBe(408);22}23});2425it("creates object and has it throw due to the timeout", async () => {26const obj = new Obj();27const w = once(obj, "ready", 50);28try {29await w;30} catch (err) {31expect(`${err}`).toContain("timeout");32// timeout error, obviously33expect(err.code).toBe(408);34}35});36});373839