import 'typings-global' export interface IResolve { (value?: T | Promise): void } export interface IReject { (reason?: any): void } export class Deferred { promise: Promise resolve: IResolve reject: IReject constructor() { this.promise = new Promise((resolve, reject) => { this.resolve = resolve this.reject = reject }) } } export let defer = () => { return new Deferred() } /** * Creates a Promise that is resolved with an array of results when all of the provided Promises resolve, or rejected when any Promise is rejected. */ export let all = Promise.all /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved or rejected. */ export let race = Promise.race /** * Creates a new resolved promise for the provided value. */ export let resolvedPromise = Promise.resolve /** * Creates a new rejected promise for the provided reason. */ export let rejectedPromise = Promise.reject