import {EventEmitter} from "events"; import {TimeoutError} from "@lodestar/utils"; export function waitForEvent( emitter: EventEmitter, event: string, timeout = 3000, condition: (e: T) => boolean = () => true ): Promise { return new Promise((resolve, reject) => { const timer = setTimeout(() => reject(new TimeoutError(`event ${event} not received`)), timeout); emitter.on(event, (e) => { if (condition(e)) { clearTimeout(timer); resolve(e); } }); }); }