function reflect(promise: Promise): Promise> { return promise.then( (v: T) => { return {status: 'fulfilled', value: v}; }, (error) => { return {status: 'rejected', reason: error}; } ); } /** * Drop in replacement for Promise.allSettled * * see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled */ export async function allSettled(promises: Promise[]): Promise[]> { return Promise.all(promises.map(reflect)); } export interface SettledPromise { status: 'fulfilled' | 'rejected'; value?: T; reason?: any; }