Use events asynchronously.
npm i @dandre3000/async-next-event
import { asyncNextEvent, patchEventStopImmediatePropagation } from '@dandre3000/async-next-event'
const target = new EventTarget
Event.prototype.stopImmediatePropagation = patchEventStopImmediatePropagation()
target.addEventListener('test', event => event.stopImmediatePropagation())
setTimeout(() => target.dispatchEvent(new Event('test')), 1000)
console.log(await asyncNextEvent(target, 'test')) // Event