The deferred promise helper is a way to run promise functions in stages while in the test environment. doing so makes it easier to test intermediary states.
DeferedPromiseHelper.ts
class DeferredPromiseHelper<IResolve, IReject> {
promise: Promise<IResolve>;
reject: (reason?: IReject) => void = () => {
throw new Error('reject not working');
};