export class Trigger { _promise!: Promise; _wake!: (arg: T) => void; constructor () { this.reset(); } wait (): Promise { return this._promise; } wake (arg: T) { this._wake(arg); } reset () { this._promise = new Promise((resolve) => { this._wake = resolve; }) } }