export class Deferred { public readonly promise: Promise public resolve!: (value: T | PromiseLike) => void public reject!: (reason?: any) => void public constructor() { this.promise = new Promise((resolve, reject) => { this.resolve = resolve this.reject = reject }) } }