export function addTimeoutToPromise( promise: Promise, ms: number ): Promise { return new Promise((resolve, reject) => { const timeout = setTimeout(() => { reject(); }, ms); promise.then( result => { clearTimeout(timeout); resolve(result); }, error => { clearTimeout(timeout); reject(error); } ); }); } export function isPromiseLike(obj: any): obj is PromiseLike { return typeof obj.then === 'function'; }