export type EventPredicate = (event: T) => boolean; export const nextEvent = ( target: EventTarget, type: string, predicate: EventPredicate = () => true): Promise => { return new Promise((resolve) => { let handleEvent = (event: unknown) => { if (predicate(event as T)) { target.removeEventListener(type, handleEvent); resolve(event as T); } }; target.addEventListener(type, handleEvent); }); };