// Copyright 2015-present 650 Industries. All rights reserved. type DeferredResolve = (value: T | PromiseLike) => void; type DeferredReject = (reason?: any) => void; export class Deferred { promise: Promise; private resolveCallback!: DeferredResolve; private rejectCallback!: DeferredReject; constructor() { this.promise = new Promise((resolve, reject) => { this.resolveCallback = resolve; this.rejectCallback = reject; }); } resolve(value: T) { this.resolveCallback(value); } reject(reason: any) { this.rejectCallback(reason); } getPromise(): Promise { return this.promise; } }