UNPKG

villa

Version:

Promise utilities for async/await-ready environment.

30 lines (25 loc) 817 B
type AwaitableCreator<T> = ( target: any, ...args: any[] ) => Promise<T> | undefined; /** @internal */ export const awaitableCreators = [] as AwaitableCreator<any>[]; /** * Create a promise for an object. * @param emitter The emitter to listen on 'error' event for rejection, and * given event types for fulfillment. * @param type A string or an array of string of event types for fulfillment. * @param errorEmitters Other emitters to listen on 'error' event for * rejection. */ export function awaitable<T>(target: any, ...args: any[]): Promise<T> { for (let creator of awaitableCreators) { let promise = creator(target, ...args); if (promise) { return promise; } } throw new TypeError( 'Cannot create awaitable from the target object with given arguments', ); }