Merge pull request #10448 from Microsoft/improvePromiseType

Improve Promise type definition
This commit is contained in:
Ron Buckton
2016-09-14 11:58:25 -07:00
committed by GitHub
15 changed files with 3379 additions and 56 deletions

View File

@@ -8,7 +8,7 @@ interface Promise<T> {
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult1, TResult2>(onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>;
then(onfulfilled?: ((value: T) => T | PromiseLike<T>) | undefined | null, onrejected?: ((reason: any) => T | PromiseLike<T>) | undefined | null): Promise<T>;
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
@@ -16,20 +16,30 @@ interface Promise<T> {
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(onfulfilled: (value: T) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>;
then<TResult>(onfulfilled: ((value: T) => T | PromiseLike<T>) | undefined | null, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<T | TResult>;
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(onfulfilled: (value: T) => TResult | PromiseLike<TResult>): Promise<TResult>;
then<TResult>(onfulfilled: (value: T) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): Promise<TResult>;
/**
* Creates a new Promise with the same internal state of this Promise.
* @returns A Promise.
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then(): Promise<T>;
then<TResult1, TResult2>(onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>;
/**
* Attaches a callback for only the rejection of the Promise.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of the callback.
*/
catch(onrejected?: ((reason: any) => T | PromiseLike<T>) | undefined | null): Promise<T>;
/**
* Attaches a callback for only the rejection of the Promise.
@@ -37,13 +47,6 @@ interface Promise<T> {
* @returns A Promise for the completion of the callback.
*/
catch<TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<T | TResult>;
/**
* Attaches a callback for only the rejection of the Promise.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of the callback.
*/
catch(onrejected: (reason: any) => T | PromiseLike<T>): Promise<T>;
}
interface PromiseConstructor {
@@ -140,6 +143,86 @@ interface PromiseConstructor {
*/
all<T>(values: (T | PromiseLike<T>)[]): Promise<T[]>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>]): Promise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>]): Promise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2, T3, T4, T5, T6, T7, T8>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>]): Promise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2, T3, T4, T5, T6, T7>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>]): Promise<T1 | T2 | T3 | T4 | T5 | T6 | T7>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2, T3, T4, T5, T6>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>]): Promise<T1 | T2 | T3 | T4 | T5 | T6>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2, T3, T4, T5>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>]): Promise<T1 | T2 | T3 | T4 | T5>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2, T3, T4>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>]): Promise<T1 | T2 | T3 | T4>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2, T3>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<T1 | T2 | T3>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1, T2>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<T1 | T2>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T>(values: (T | PromiseLike<T>)[]): Promise<T>;
/**
* Creates a new rejected promise for the provided reason.
* @param reason The reason the promise was rejected.

45
src/lib/es5.d.ts vendored
View File

@@ -1271,13 +1271,44 @@ declare type PromiseConstructorLike = new <T>(executor: (resolve: (value?: T | P
interface PromiseLike<T> {
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): PromiseLike<TResult>;
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then(
onfulfilled?: ((value: T) => T | PromiseLike<T>) | undefined | null,
onrejected?: ((reason: any) => T | PromiseLike<T>) | undefined | null): PromiseLike<T>;
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(
onfulfilled: ((value: T) => T | PromiseLike<T>) | undefined | null,
onrejected: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<T | TResult>;
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(
onfulfilled: (value: T) => TResult | PromiseLike<TResult>,
onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): PromiseLike<TResult>;
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult1, TResult2>(
onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>,
onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
}
interface ArrayLike<T> {

View File

@@ -46,7 +46,7 @@ export class BrokenClass {
this.doStuff(order.id)
>this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }) : Promise<void>
>this.doStuff(order.id) .then : { <TResult1, TResult2>(onfulfilled: (value: void) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: void) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: void) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<void>; }
>this.doStuff(order.id) .then : { (onfulfilled?: (value: void) => void | PromiseLike<void>, onrejected?: (reason: any) => void | PromiseLike<void>): Promise<void>; <TResult>(onfulfilled: (value: void) => void | PromiseLike<void>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<void | TResult>; <TResult>(onfulfilled: (value: void) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: void) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>this.doStuff(order.id) : Promise<void>
>this.doStuff : (id: number) => Promise<void>
>this : this
@@ -56,7 +56,7 @@ export class BrokenClass {
>id : any
.then((items) => {
>then : { <TResult1, TResult2>(onfulfilled: (value: void) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: void) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: void) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<void>; }
>then : { (onfulfilled?: (value: void) => void | PromiseLike<void>, onrejected?: (reason: any) => void | PromiseLike<void>): Promise<void>; <TResult>(onfulfilled: (value: void) => void | PromiseLike<void>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<void | TResult>; <TResult>(onfulfilled: (value: void) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: void) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>(items) => { order.items = items; resolve(order); } : (items: void) => void
>items : void
@@ -78,7 +78,7 @@ export class BrokenClass {
return Promise.all(result.map(populateItems))
>Promise.all(result.map(populateItems)) .then((orders: Array<MyModule.MyModel>) => { resolve(orders); }) : Promise<void>
>Promise.all(result.map(populateItems)) .then : { <TResult1, TResult2>(onfulfilled: (value: {}[]) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: {}[]) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: {}[]) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<{}[]>; }
>Promise.all(result.map(populateItems)) .then : { (onfulfilled?: (value: {}[]) => {}[] | PromiseLike<{}[]>, onrejected?: (reason: any) => {}[] | PromiseLike<{}[]>): Promise<{}[]>; <TResult>(onfulfilled: (value: {}[]) => {}[] | PromiseLike<{}[]>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<{}[] | TResult>; <TResult>(onfulfilled: (value: {}[]) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: {}[]) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>Promise.all(result.map(populateItems)) : Promise<{}[]>
>Promise.all : { <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; <T1, T2, T3, T4, T5, T6, T7, T8>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; <T1, T2, T3, T4, T5, T6, T7>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; <T1, T2, T3, T4, T5, T6>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>]): Promise<[T1, T2, T3, T4, T5, T6]>; <T1, T2, T3, T4, T5>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>]): Promise<[T1, T2, T3, T4, T5]>; <T1, T2, T3, T4>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>]): Promise<[T1, T2, T3, T4]>; <T1, T2, T3>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<[T1, T2, T3]>; <T1, T2>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>; <T>(values: (T | PromiseLike<T>)[]): Promise<T[]>; <TAll>(values: Iterable<TAll | PromiseLike<TAll>>): Promise<TAll[]>; }
>Promise : PromiseConstructor
@@ -90,7 +90,7 @@ export class BrokenClass {
>populateItems : (order: any) => Promise<{}>
.then((orders: Array<MyModule.MyModel>) => {
>then : { <TResult1, TResult2>(onfulfilled: (value: {}[]) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: {}[]) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: {}[]) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<{}[]>; }
>then : { (onfulfilled?: (value: {}[]) => {}[] | PromiseLike<{}[]>, onrejected?: (reason: any) => {}[] | PromiseLike<{}[]>): Promise<{}[]>; <TResult>(onfulfilled: (value: {}[]) => {}[] | PromiseLike<{}[]>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<{}[] | TResult>; <TResult>(onfulfilled: (value: {}[]) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: {}[]) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>(orders: Array<MyModule.MyModel>) => { resolve(orders); } : (orders: MyModule.MyModel[]) => void
>orders : MyModule.MyModel[]
>Array : T[]

View File

@@ -148,10 +148,10 @@ declare var console: any;
out().then(() => {
>out().then(() => { console.log("Yea!");}) : Promise<void>
>out().then : { <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<{}>; }
>out().then : { (onfulfilled?: (value: {}) => {} | PromiseLike<{}>, onrejected?: (reason: any) => {} | PromiseLike<{}>): Promise<{}>; <TResult>(onfulfilled: (value: {}) => {} | PromiseLike<{}>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<{} | TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>out() : Promise<{}>
>out : () => Promise<{}>
>then : { <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<{}>; }
>then : { (onfulfilled?: (value: {}) => {} | PromiseLike<{}>, onrejected?: (reason: any) => {} | PromiseLike<{}>): Promise<{}>; <TResult>(onfulfilled: (value: {}) => {} | PromiseLike<{}>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<{} | TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => { console.log("Yea!");} : () => void
console.log("Yea!");

View File

@@ -148,10 +148,10 @@ declare var console: any;
out().then(() => {
>out().then(() => { console.log("Yea!");}) : Promise<void>
>out().then : { <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<{}>; }
>out().then : { (onfulfilled?: (value: {}) => {} | PromiseLike<{}>, onrejected?: (reason: any) => {} | PromiseLike<{}>): Promise<{}>; <TResult>(onfulfilled: (value: {}) => {} | PromiseLike<{}>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<{} | TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>out() : Promise<{}>
>out : () => Promise<{}>
>then : { <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<{}>; }
>then : { (onfulfilled?: (value: {}) => {} | PromiseLike<{}>, onrejected?: (reason: any) => {} | PromiseLike<{}>): Promise<{}>; <TResult>(onfulfilled: (value: {}) => {} | PromiseLike<{}>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<{} | TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => { console.log("Yea!");} : () => void
console.log("Yea!");

View File

@@ -148,10 +148,10 @@ declare var console: any;
out().then(() => {
>out().then(() => { console.log("Yea!");}) : Promise<void>
>out().then : { <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<{}>; }
>out().then : { (onfulfilled?: (value: {}) => {} | PromiseLike<{}>, onrejected?: (reason: any) => {} | PromiseLike<{}>): Promise<{}>; <TResult>(onfulfilled: (value: {}) => {} | PromiseLike<{}>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<{} | TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>out() : Promise<{}>
>out : () => Promise<{}>
>then : { <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<{}>; }
>then : { (onfulfilled?: (value: {}) => {} | PromiseLike<{}>, onrejected?: (reason: any) => {} | PromiseLike<{}>): Promise<{}>; <TResult>(onfulfilled: (value: {}) => {} | PromiseLike<{}>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<{} | TResult>; <TResult>(onfulfilled: (value: {}) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: {}) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => { console.log("Yea!");} : () => void
console.log("Yea!");

View File

@@ -91,7 +91,69 @@ async function I() {
catch (e) {
return Promise.reject(Error());
}
}
}
// addresses github issue #4903:
const p00 = p.catch();
const p01 = p.catch(undefined);
const p07 = p.catch(null);
const p02 = p.catch(() => 1);
const p03 = p.catch(() => {});
const p04 = p.catch(() => {throw 1});
const p05 = p.catch(() => Promise.reject(1));
const p06 = p.catch(() => Promise.resolve(1));
const p10 = p.then();
const p20 = p.then(undefined);
const p21 = p.then(() => 1);
const p22 = p.then(() => {});
const p23 = p.then(() => {throw 1});
const p24 = p.then(() => Promise.resolve(1));
const p25 = p.then(() => Promise.reject(1));
const p30 = p.then(undefined, undefined);
const p31 = p.then(undefined, () => 1);
const p32 = p.then(undefined, () => {});
const p33 = p.then(undefined, () => {throw 1});
const p34 = p.then(undefined, () => Promise.resolve(1));
const p35 = p.then(undefined, () => Promise.reject(1));
const p40 = p.then(() => "1", undefined);
const p41 = p.then(() => "1", () => 1);
const p42 = p.then(() => "1", () => {});
const p43 = p.then(() => "1", () => {throw 1});
const p44 = p.then(() => "1", () => Promise.resolve(1));
const p45 = p.then(() => "1", () => Promise.reject(1));
const p50 = p.then(() => {}, undefined);
const p51 = p.then(() => {}, () => 1);
const p52 = p.then(() => {}, () => {});
const p53 = p.then(() => {}, () => {throw 1});
const p54 = p.then(() => {}, () => Promise.resolve(1));
const p55 = p.then(() => {}, () => Promise.reject(1));
const p60 = p.then(() => {throw 1}, undefined);
const p61 = p.then(() => {throw 1}, () => 1);
const p62 = p.then(() => {throw 1}, () => {});
const p63 = p.then(() => {throw 1}, () => {throw 1});
const p64 = p.then(() => {throw 1}, () => Promise.resolve(1));
const p65 = p.then(() => {throw 1}, () => Promise.reject(1));
const p70 = p.then(() => Promise.resolve("1"), undefined);
const p71 = p.then(() => Promise.resolve("1"), () => 1);
const p72 = p.then(() => Promise.resolve("1"), () => {});
const p73 = p.then(() => Promise.resolve("1"), () => {throw 1});
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
const p80 = p.then(() => Promise.reject(1), undefined);
const p81 = p.then(() => Promise.reject(1), () => 1);
const p82 = p.then(() => Promise.reject(1), () => {});
const p83 = p.then(() => Promise.reject(1), () => {throw 1});
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));
//// [promiseType.js]
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -200,3 +262,55 @@ function I() {
}
});
}
// addresses github issue #4903:
const p00 = p.catch();
const p01 = p.catch(undefined);
const p07 = p.catch(null);
const p02 = p.catch(() => 1);
const p03 = p.catch(() => { });
const p04 = p.catch(() => { throw 1; });
const p05 = p.catch(() => Promise.reject(1));
const p06 = p.catch(() => Promise.resolve(1));
const p10 = p.then();
const p20 = p.then(undefined);
const p21 = p.then(() => 1);
const p22 = p.then(() => { });
const p23 = p.then(() => { throw 1; });
const p24 = p.then(() => Promise.resolve(1));
const p25 = p.then(() => Promise.reject(1));
const p30 = p.then(undefined, undefined);
const p31 = p.then(undefined, () => 1);
const p32 = p.then(undefined, () => { });
const p33 = p.then(undefined, () => { throw 1; });
const p34 = p.then(undefined, () => Promise.resolve(1));
const p35 = p.then(undefined, () => Promise.reject(1));
const p40 = p.then(() => "1", undefined);
const p41 = p.then(() => "1", () => 1);
const p42 = p.then(() => "1", () => { });
const p43 = p.then(() => "1", () => { throw 1; });
const p44 = p.then(() => "1", () => Promise.resolve(1));
const p45 = p.then(() => "1", () => Promise.reject(1));
const p50 = p.then(() => { }, undefined);
const p51 = p.then(() => { }, () => 1);
const p52 = p.then(() => { }, () => { });
const p53 = p.then(() => { }, () => { throw 1; });
const p54 = p.then(() => { }, () => Promise.resolve(1));
const p55 = p.then(() => { }, () => Promise.reject(1));
const p60 = p.then(() => { throw 1; }, undefined);
const p61 = p.then(() => { throw 1; }, () => 1);
const p62 = p.then(() => { throw 1; }, () => { });
const p63 = p.then(() => { throw 1; }, () => { throw 1; });
const p64 = p.then(() => { throw 1; }, () => Promise.resolve(1));
const p65 = p.then(() => { throw 1; }, () => Promise.reject(1));
const p70 = p.then(() => Promise.resolve("1"), undefined);
const p71 = p.then(() => Promise.resolve("1"), () => 1);
const p72 = p.then(() => Promise.resolve("1"), () => { });
const p73 = p.then(() => Promise.resolve("1"), () => { throw 1; });
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
const p80 = p.then(() => Promise.reject(1), undefined);
const p81 = p.then(() => Promise.reject(1), () => 1);
const p82 = p.then(() => Promise.reject(1), () => { });
const p83 = p.then(() => Promise.reject(1), () => { throw 1; });
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));

View File

@@ -231,3 +231,410 @@ async function I() {
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
}
}
// addresses github issue #4903:
const p00 = p.catch();
>p00 : Symbol(p00, Decl(promiseType.ts, 96, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p01 = p.catch(undefined);
>p01 : Symbol(p01, Decl(promiseType.ts, 97, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p07 = p.catch(null);
>p07 : Symbol(p07, Decl(promiseType.ts, 98, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p02 = p.catch(() => 1);
>p02 : Symbol(p02, Decl(promiseType.ts, 99, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p03 = p.catch(() => {});
>p03 : Symbol(p03, Decl(promiseType.ts, 100, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p04 = p.catch(() => {throw 1});
>p04 : Symbol(p04, Decl(promiseType.ts, 101, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p05 = p.catch(() => Promise.reject(1));
>p05 : Symbol(p05, Decl(promiseType.ts, 102, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p06 = p.catch(() => Promise.resolve(1));
>p06 : Symbol(p06, Decl(promiseType.ts, 103, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p10 = p.then();
>p10 : Symbol(p10, Decl(promiseType.ts, 105, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p20 = p.then(undefined);
>p20 : Symbol(p20, Decl(promiseType.ts, 107, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p21 = p.then(() => 1);
>p21 : Symbol(p21, Decl(promiseType.ts, 108, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p22 = p.then(() => {});
>p22 : Symbol(p22, Decl(promiseType.ts, 109, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p23 = p.then(() => {throw 1});
>p23 : Symbol(p23, Decl(promiseType.ts, 110, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p24 = p.then(() => Promise.resolve(1));
>p24 : Symbol(p24, Decl(promiseType.ts, 111, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p25 = p.then(() => Promise.reject(1));
>p25 : Symbol(p25, Decl(promiseType.ts, 112, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p30 = p.then(undefined, undefined);
>p30 : Symbol(p30, Decl(promiseType.ts, 114, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
>undefined : Symbol(undefined)
const p31 = p.then(undefined, () => 1);
>p31 : Symbol(p31, Decl(promiseType.ts, 115, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p32 = p.then(undefined, () => {});
>p32 : Symbol(p32, Decl(promiseType.ts, 116, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p33 = p.then(undefined, () => {throw 1});
>p33 : Symbol(p33, Decl(promiseType.ts, 117, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p34 = p.then(undefined, () => Promise.resolve(1));
>p34 : Symbol(p34, Decl(promiseType.ts, 118, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p35 = p.then(undefined, () => Promise.reject(1));
>p35 : Symbol(p35, Decl(promiseType.ts, 119, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p40 = p.then(() => "1", undefined);
>p40 : Symbol(p40, Decl(promiseType.ts, 121, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p41 = p.then(() => "1", () => 1);
>p41 : Symbol(p41, Decl(promiseType.ts, 122, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p42 = p.then(() => "1", () => {});
>p42 : Symbol(p42, Decl(promiseType.ts, 123, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p43 = p.then(() => "1", () => {throw 1});
>p43 : Symbol(p43, Decl(promiseType.ts, 124, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p44 = p.then(() => "1", () => Promise.resolve(1));
>p44 : Symbol(p44, Decl(promiseType.ts, 125, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p45 = p.then(() => "1", () => Promise.reject(1));
>p45 : Symbol(p45, Decl(promiseType.ts, 126, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p50 = p.then(() => {}, undefined);
>p50 : Symbol(p50, Decl(promiseType.ts, 128, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p51 = p.then(() => {}, () => 1);
>p51 : Symbol(p51, Decl(promiseType.ts, 129, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p52 = p.then(() => {}, () => {});
>p52 : Symbol(p52, Decl(promiseType.ts, 130, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p53 = p.then(() => {}, () => {throw 1});
>p53 : Symbol(p53, Decl(promiseType.ts, 131, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p54 = p.then(() => {}, () => Promise.resolve(1));
>p54 : Symbol(p54, Decl(promiseType.ts, 132, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p55 = p.then(() => {}, () => Promise.reject(1));
>p55 : Symbol(p55, Decl(promiseType.ts, 133, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p60 = p.then(() => {throw 1}, undefined);
>p60 : Symbol(p60, Decl(promiseType.ts, 135, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p61 = p.then(() => {throw 1}, () => 1);
>p61 : Symbol(p61, Decl(promiseType.ts, 136, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p62 = p.then(() => {throw 1}, () => {});
>p62 : Symbol(p62, Decl(promiseType.ts, 137, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p63 = p.then(() => {throw 1}, () => {throw 1});
>p63 : Symbol(p63, Decl(promiseType.ts, 138, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p64 = p.then(() => {throw 1}, () => Promise.resolve(1));
>p64 : Symbol(p64, Decl(promiseType.ts, 139, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p65 = p.then(() => {throw 1}, () => Promise.reject(1));
>p65 : Symbol(p65, Decl(promiseType.ts, 140, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p70 = p.then(() => Promise.resolve("1"), undefined);
>p70 : Symbol(p70, Decl(promiseType.ts, 142, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p71 = p.then(() => Promise.resolve("1"), () => 1);
>p71 : Symbol(p71, Decl(promiseType.ts, 143, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p72 = p.then(() => Promise.resolve("1"), () => {});
>p72 : Symbol(p72, Decl(promiseType.ts, 144, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p73 = p.then(() => Promise.resolve("1"), () => {throw 1});
>p73 : Symbol(p73, Decl(promiseType.ts, 145, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
>p74 : Symbol(p74, Decl(promiseType.ts, 146, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
>p75 : Symbol(p75, Decl(promiseType.ts, 147, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p80 = p.then(() => Promise.reject(1), undefined);
>p80 : Symbol(p80, Decl(promiseType.ts, 149, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p81 = p.then(() => Promise.reject(1), () => 1);
>p81 : Symbol(p81, Decl(promiseType.ts, 150, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p82 = p.then(() => Promise.reject(1), () => {});
>p82 : Symbol(p82, Decl(promiseType.ts, 151, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p83 = p.then(() => Promise.reject(1), () => {throw 1});
>p83 : Symbol(p83, Decl(promiseType.ts, 152, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
>p84 : Symbol(p84, Decl(promiseType.ts, 153, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));
>p85 : Symbol(p85, Decl(promiseType.ts, 154, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseType.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))

View File

@@ -6,16 +6,16 @@ declare var p: Promise<boolean>;
const a = p.then();
>a : Promise<boolean>
>p.then() : Promise<boolean>
>p.then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
const b = p.then(b => 1);
>b : Promise<number>
>p.then(b => 1) : Promise<number>
>p.then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : 1
@@ -23,9 +23,9 @@ const b = p.then(b => 1);
const c = p.then(b => 1, e => 'error');
>c : Promise<string | number>
>p.then(b => 1, e => 'error') : Promise<string | number>
>p.then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : 1
@@ -36,9 +36,9 @@ const c = p.then(b => 1, e => 'error');
const d = p.then(b => 1, e => { });
>d : Promise<number | void>
>p.then(b => 1, e => { }) : Promise<number | void>
>p.then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : 1
@@ -48,9 +48,9 @@ const d = p.then(b => 1, e => { });
const e = p.then(b => 1, e => { throw Error(); });
>e : Promise<number>
>p.then(b => 1, e => { throw Error(); }) : Promise<number>
>p.then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : 1
@@ -62,9 +62,9 @@ const e = p.then(b => 1, e => { throw Error(); });
const f = p.then(b => 1, e => Promise.reject(Error()));
>f : Promise<number>
>p.then(b => 1, e => Promise.reject(Error())) : Promise<number>
>p.then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<boolean>; }
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : 1
@@ -80,9 +80,9 @@ const f = p.then(b => 1, e => Promise.reject(Error()));
const g = p.catch(e => 'error');
>g : Promise<string | boolean>
>p.catch(e => 'error') : Promise<string | boolean>
>p.catch : { <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; (onrejected: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; }
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; (onrejected: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; }
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>e => 'error' : (e: any) => string
>e : any
>'error' : "error"
@@ -90,18 +90,18 @@ const g = p.catch(e => 'error');
const h = p.catch(e => { });
>h : Promise<boolean | void>
>p.catch(e => { }) : Promise<boolean | void>
>p.catch : { <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; (onrejected: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; }
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; (onrejected: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; }
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>e => { } : (e: any) => void
>e : any
const i = p.catch(e => { throw Error(); });
>i : Promise<boolean>
>p.catch(e => { throw Error(); }) : Promise<boolean>
>p.catch : { <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; (onrejected: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; }
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; (onrejected: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; }
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>e => { throw Error(); } : (e: any) => never
>e : any
>Error() : Error
@@ -110,9 +110,9 @@ const i = p.catch(e => { throw Error(); });
const j = p.catch(e => Promise.reject(Error()));
>j : Promise<boolean>
>p.catch(e => Promise.reject(Error())) : Promise<boolean>
>p.catch : { <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; (onrejected: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; }
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; (onrejected: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; }
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>e => Promise.reject(Error()) : (e: any) => Promise<never>
>e : any
>Promise.reject(Error()) : Promise<never>
@@ -285,3 +285,616 @@ async function I() {
>Error : ErrorConstructor
}
}
// addresses github issue #4903:
const p00 = p.catch();
>p00 : Promise<boolean>
>p.catch() : Promise<boolean>
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
const p01 = p.catch(undefined);
>p01 : Promise<boolean>
>p.catch(undefined) : Promise<boolean>
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>undefined : undefined
const p07 = p.catch(null);
>p07 : Promise<boolean>
>p.catch(null) : Promise<boolean>
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>null : null
const p02 = p.catch(() => 1);
>p02 : Promise<number | boolean>
>p.catch(() => 1) : Promise<number | boolean>
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => 1 : () => number
>1 : number
const p03 = p.catch(() => {});
>p03 : Promise<boolean | void>
>p.catch(() => {}) : Promise<boolean | void>
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => {} : () => void
const p04 = p.catch(() => {throw 1});
>p04 : Promise<boolean>
>p.catch(() => {throw 1}) : Promise<boolean>
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => {throw 1} : () => never
>1 : number
const p05 = p.catch(() => Promise.reject(1));
>p05 : Promise<boolean>
>p.catch(() => Promise.reject(1)) : Promise<boolean>
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p06 = p.catch(() => Promise.resolve(1));
>p06 : Promise<number | boolean>
>p.catch(() => Promise.resolve(1)) : Promise<number | boolean>
>p.catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p10 = p.then();
>p10 : Promise<boolean>
>p.then() : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
const p20 = p.then(undefined);
>p20 : Promise<boolean>
>p.then(undefined) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
const p21 = p.then(() => 1);
>p21 : Promise<number>
>p.then(() => 1) : Promise<number>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => 1 : () => number
>1 : number
const p22 = p.then(() => {});
>p22 : Promise<void>
>p.then(() => {}) : Promise<void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
const p23 = p.then(() => {throw 1});
>p23 : Promise<boolean>
>p.then(() => {throw 1}) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
const p24 = p.then(() => Promise.resolve(1));
>p24 : Promise<number>
>p.then(() => Promise.resolve(1)) : Promise<number>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p25 = p.then(() => Promise.reject(1));
>p25 : Promise<boolean>
>p.then(() => Promise.reject(1)) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p30 = p.then(undefined, undefined);
>p30 : Promise<boolean>
>p.then(undefined, undefined) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>undefined : undefined
const p31 = p.then(undefined, () => 1);
>p31 : Promise<number | boolean>
>p.then(undefined, () => 1) : Promise<number | boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => 1 : () => number
>1 : number
const p32 = p.then(undefined, () => {});
>p32 : Promise<boolean | void>
>p.then(undefined, () => {}) : Promise<boolean | void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => {} : () => void
const p33 = p.then(undefined, () => {throw 1});
>p33 : Promise<boolean>
>p.then(undefined, () => {throw 1}) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => {throw 1} : () => never
>1 : number
const p34 = p.then(undefined, () => Promise.resolve(1));
>p34 : Promise<number | boolean>
>p.then(undefined, () => Promise.resolve(1)) : Promise<number | boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p35 = p.then(undefined, () => Promise.reject(1));
>p35 : Promise<boolean>
>p.then(undefined, () => Promise.reject(1)) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p40 = p.then(() => "1", undefined);
>p40 : Promise<string>
>p.then(() => "1", undefined) : Promise<string>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>undefined : undefined
const p41 = p.then(() => "1", () => 1);
>p41 : Promise<string | number>
>p.then(() => "1", () => 1) : Promise<string | number>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => 1 : () => number
>1 : number
const p42 = p.then(() => "1", () => {});
>p42 : Promise<string | void>
>p.then(() => "1", () => {}) : Promise<string | void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => {} : () => void
const p43 = p.then(() => "1", () => {throw 1});
>p43 : Promise<string>
>p.then(() => "1", () => {throw 1}) : Promise<string>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => {throw 1} : () => never
>1 : number
const p44 = p.then(() => "1", () => Promise.resolve(1));
>p44 : Promise<string | number>
>p.then(() => "1", () => Promise.resolve(1)) : Promise<string | number>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p45 = p.then(() => "1", () => Promise.reject(1));
>p45 : Promise<string>
>p.then(() => "1", () => Promise.reject(1)) : Promise<string>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p50 = p.then(() => {}, undefined);
>p50 : Promise<void>
>p.then(() => {}, undefined) : Promise<void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>undefined : undefined
const p51 = p.then(() => {}, () => 1);
>p51 : Promise<number | void>
>p.then(() => {}, () => 1) : Promise<number | void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => 1 : () => number
>1 : number
const p52 = p.then(() => {}, () => {});
>p52 : Promise<void>
>p.then(() => {}, () => {}) : Promise<void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => {} : () => void
const p53 = p.then(() => {}, () => {throw 1});
>p53 : Promise<void>
>p.then(() => {}, () => {throw 1}) : Promise<void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => {throw 1} : () => never
>1 : number
const p54 = p.then(() => {}, () => Promise.resolve(1));
>p54 : Promise<number | void>
>p.then(() => {}, () => Promise.resolve(1)) : Promise<number | void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p55 = p.then(() => {}, () => Promise.reject(1));
>p55 : Promise<void>
>p.then(() => {}, () => Promise.reject(1)) : Promise<void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p60 = p.then(() => {throw 1}, undefined);
>p60 : Promise<boolean>
>p.then(() => {throw 1}, undefined) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>undefined : undefined
const p61 = p.then(() => {throw 1}, () => 1);
>p61 : Promise<number | boolean>
>p.then(() => {throw 1}, () => 1) : Promise<number | boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => 1 : () => number
>1 : number
const p62 = p.then(() => {throw 1}, () => {});
>p62 : Promise<boolean | void>
>p.then(() => {throw 1}, () => {}) : Promise<boolean | void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => {} : () => void
const p63 = p.then(() => {throw 1}, () => {throw 1});
>p63 : Promise<boolean>
>p.then(() => {throw 1}, () => {throw 1}) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => {throw 1} : () => never
>1 : number
const p64 = p.then(() => {throw 1}, () => Promise.resolve(1));
>p64 : Promise<number | boolean>
>p.then(() => {throw 1}, () => Promise.resolve(1)) : Promise<number | boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p65 = p.then(() => {throw 1}, () => Promise.reject(1));
>p65 : Promise<boolean>
>p.then(() => {throw 1}, () => Promise.reject(1)) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p70 = p.then(() => Promise.resolve("1"), undefined);
>p70 : Promise<string>
>p.then(() => Promise.resolve("1"), undefined) : Promise<string>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>undefined : undefined
const p71 = p.then(() => Promise.resolve("1"), () => 1);
>p71 : Promise<string | number>
>p.then(() => Promise.resolve("1"), () => 1) : Promise<string | number>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => 1 : () => number
>1 : number
const p72 = p.then(() => Promise.resolve("1"), () => {});
>p72 : Promise<string | void>
>p.then(() => Promise.resolve("1"), () => {}) : Promise<string | void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => {} : () => void
const p73 = p.then(() => Promise.resolve("1"), () => {throw 1});
>p73 : Promise<string>
>p.then(() => Promise.resolve("1"), () => {throw 1}) : Promise<string>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => {throw 1} : () => never
>1 : number
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
>p74 : Promise<string | number>
>p.then(() => Promise.resolve("1"), () => Promise.resolve(1)) : Promise<string | number>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
>p75 : Promise<string>
>p.then(() => Promise.resolve("1"), () => Promise.reject(1)) : Promise<string>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p80 = p.then(() => Promise.reject(1), undefined);
>p80 : Promise<boolean>
>p.then(() => Promise.reject(1), undefined) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>undefined : undefined
const p81 = p.then(() => Promise.reject(1), () => 1);
>p81 : Promise<number | boolean>
>p.then(() => Promise.reject(1), () => 1) : Promise<number | boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => 1 : () => number
>1 : number
const p82 = p.then(() => Promise.reject(1), () => {});
>p82 : Promise<boolean | void>
>p.then(() => Promise.reject(1), () => {}) : Promise<boolean | void>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => {} : () => void
const p83 = p.then(() => Promise.reject(1), () => {throw 1});
>p83 : Promise<boolean>
>p.then(() => Promise.reject(1), () => {throw 1}) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => {throw 1} : () => never
>1 : number
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
>p84 : Promise<number | boolean>
>p.then(() => Promise.reject(1), () => Promise.resolve(1)) : Promise<number | boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));
>p85 : Promise<boolean>
>p.then(() => Promise.reject(1), () => Promise.reject(1)) : Promise<boolean>
>p.then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: (value: boolean) => boolean | PromiseLike<boolean>, onrejected?: (reason: any) => boolean | PromiseLike<boolean>): Promise<boolean>; <TResult>(onfulfilled: (value: boolean) => boolean | PromiseLike<boolean>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number

View File

@@ -0,0 +1,316 @@
//// [promiseTypeStrictNull.ts]
declare var p: Promise<boolean>;
const a = p.then();
const b = p.then(b => 1);
const c = p.then(b => 1, e => 'error');
const d = p.then(b => 1, e => { });
const e = p.then(b => 1, e => { throw Error(); });
const f = p.then(b => 1, e => Promise.reject(Error()));
const g = p.catch(e => 'error');
const h = p.catch(e => { });
const i = p.catch(e => { throw Error(); });
const j = p.catch(e => Promise.reject(Error()));
async function A() {
const a = await p;
return a;
}
async function B() {
const a = await p;
return 1;
}
// NOTE: This reports a "No best comment type exists among return expressions." error, and is
// ignored to get the types result for the test.
// async function C() {
// try {
// const a = await p;
// return 1;
// }
// catch (e) {
// return 'error';
// }
// }
async function D() {
try {
const a = await p;
return 1;
}
catch (e) {
}
}
async function E() {
try {
const a = await p;
return 1;
}
catch (e) {
throw Error();
}
}
async function F() {
try {
const a = await p;
return 1;
}
catch (e) {
return Promise.reject(Error());
}
}
async function G() {
try {
const a = await p;
return a;
}
catch (e) {
return;
}
}
async function H() {
try {
const a = await p;
return a;
}
catch (e) {
throw Error();
}
}
async function I() {
try {
const a = await p;
return a;
}
catch (e) {
return Promise.reject(Error());
}
}
// addresses github issue #4903:
const p00 = p.catch();
const p01 = p.catch(undefined);
const p07 = p.catch(null);
const p02 = p.catch(() => 1);
const p03 = p.catch(() => {});
const p04 = p.catch(() => {throw 1});
const p05 = p.catch(() => Promise.reject(1));
const p06 = p.catch(() => Promise.resolve(1));
const p10 = p.then();
const p20 = p.then(undefined);
const p21 = p.then(() => 1);
const p22 = p.then(() => {});
const p23 = p.then(() => {throw 1});
const p24 = p.then(() => Promise.resolve(1));
const p25 = p.then(() => Promise.reject(1));
const p30 = p.then(undefined, undefined);
const p31 = p.then(undefined, () => 1);
const p32 = p.then(undefined, () => {});
const p33 = p.then(undefined, () => {throw 1});
const p34 = p.then(undefined, () => Promise.resolve(1));
const p35 = p.then(undefined, () => Promise.reject(1));
const p40 = p.then(() => "1", undefined);
const p41 = p.then(() => "1", () => 1);
const p42 = p.then(() => "1", () => {});
const p43 = p.then(() => "1", () => {throw 1});
const p44 = p.then(() => "1", () => Promise.resolve(1));
const p45 = p.then(() => "1", () => Promise.reject(1));
const p50 = p.then(() => {}, undefined);
const p51 = p.then(() => {}, () => 1);
const p52 = p.then(() => {}, () => {});
const p53 = p.then(() => {}, () => {throw 1});
const p54 = p.then(() => {}, () => Promise.resolve(1));
const p55 = p.then(() => {}, () => Promise.reject(1));
const p60 = p.then(() => {throw 1}, undefined);
const p61 = p.then(() => {throw 1}, () => 1);
const p62 = p.then(() => {throw 1}, () => {});
const p63 = p.then(() => {throw 1}, () => {throw 1});
const p64 = p.then(() => {throw 1}, () => Promise.resolve(1));
const p65 = p.then(() => {throw 1}, () => Promise.reject(1));
const p70 = p.then(() => Promise.resolve("1"), undefined);
const p71 = p.then(() => Promise.resolve("1"), () => 1);
const p72 = p.then(() => Promise.resolve("1"), () => {});
const p73 = p.then(() => Promise.resolve("1"), () => {throw 1});
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
const p80 = p.then(() => Promise.reject(1), undefined);
const p81 = p.then(() => Promise.reject(1), () => 1);
const p82 = p.then(() => Promise.reject(1), () => {});
const p83 = p.then(() => Promise.reject(1), () => {throw 1});
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));
//// [promiseTypeStrictNull.js]
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments)).next());
});
};
const a = p.then();
const b = p.then(b => 1);
const c = p.then(b => 1, e => 'error');
const d = p.then(b => 1, e => { });
const e = p.then(b => 1, e => { throw Error(); });
const f = p.then(b => 1, e => Promise.reject(Error()));
const g = p.catch(e => 'error');
const h = p.catch(e => { });
const i = p.catch(e => { throw Error(); });
const j = p.catch(e => Promise.reject(Error()));
function A() {
return __awaiter(this, void 0, void 0, function* () {
const a = yield p;
return a;
});
}
function B() {
return __awaiter(this, void 0, void 0, function* () {
const a = yield p;
return 1;
});
}
// NOTE: This reports a "No best comment type exists among return expressions." error, and is
// ignored to get the types result for the test.
// async function C() {
// try {
// const a = await p;
// return 1;
// }
// catch (e) {
// return 'error';
// }
// }
function D() {
return __awaiter(this, void 0, void 0, function* () {
try {
const a = yield p;
return 1;
}
catch (e) {
}
});
}
function E() {
return __awaiter(this, void 0, void 0, function* () {
try {
const a = yield p;
return 1;
}
catch (e) {
throw Error();
}
});
}
function F() {
return __awaiter(this, void 0, void 0, function* () {
try {
const a = yield p;
return 1;
}
catch (e) {
return Promise.reject(Error());
}
});
}
function G() {
return __awaiter(this, void 0, void 0, function* () {
try {
const a = yield p;
return a;
}
catch (e) {
return;
}
});
}
function H() {
return __awaiter(this, void 0, void 0, function* () {
try {
const a = yield p;
return a;
}
catch (e) {
throw Error();
}
});
}
function I() {
return __awaiter(this, void 0, void 0, function* () {
try {
const a = yield p;
return a;
}
catch (e) {
return Promise.reject(Error());
}
});
}
// addresses github issue #4903:
const p00 = p.catch();
const p01 = p.catch(undefined);
const p07 = p.catch(null);
const p02 = p.catch(() => 1);
const p03 = p.catch(() => { });
const p04 = p.catch(() => { throw 1; });
const p05 = p.catch(() => Promise.reject(1));
const p06 = p.catch(() => Promise.resolve(1));
const p10 = p.then();
const p20 = p.then(undefined);
const p21 = p.then(() => 1);
const p22 = p.then(() => { });
const p23 = p.then(() => { throw 1; });
const p24 = p.then(() => Promise.resolve(1));
const p25 = p.then(() => Promise.reject(1));
const p30 = p.then(undefined, undefined);
const p31 = p.then(undefined, () => 1);
const p32 = p.then(undefined, () => { });
const p33 = p.then(undefined, () => { throw 1; });
const p34 = p.then(undefined, () => Promise.resolve(1));
const p35 = p.then(undefined, () => Promise.reject(1));
const p40 = p.then(() => "1", undefined);
const p41 = p.then(() => "1", () => 1);
const p42 = p.then(() => "1", () => { });
const p43 = p.then(() => "1", () => { throw 1; });
const p44 = p.then(() => "1", () => Promise.resolve(1));
const p45 = p.then(() => "1", () => Promise.reject(1));
const p50 = p.then(() => { }, undefined);
const p51 = p.then(() => { }, () => 1);
const p52 = p.then(() => { }, () => { });
const p53 = p.then(() => { }, () => { throw 1; });
const p54 = p.then(() => { }, () => Promise.resolve(1));
const p55 = p.then(() => { }, () => Promise.reject(1));
const p60 = p.then(() => { throw 1; }, undefined);
const p61 = p.then(() => { throw 1; }, () => 1);
const p62 = p.then(() => { throw 1; }, () => { });
const p63 = p.then(() => { throw 1; }, () => { throw 1; });
const p64 = p.then(() => { throw 1; }, () => Promise.resolve(1));
const p65 = p.then(() => { throw 1; }, () => Promise.reject(1));
const p70 = p.then(() => Promise.resolve("1"), undefined);
const p71 = p.then(() => Promise.resolve("1"), () => 1);
const p72 = p.then(() => Promise.resolve("1"), () => { });
const p73 = p.then(() => Promise.resolve("1"), () => { throw 1; });
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
const p80 = p.then(() => Promise.reject(1), undefined);
const p81 = p.then(() => Promise.reject(1), () => 1);
const p82 = p.then(() => Promise.reject(1), () => { });
const p83 = p.then(() => Promise.reject(1), () => { throw 1; });
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));

View File

@@ -0,0 +1,640 @@
=== tests/cases/compiler/promiseTypeStrictNull.ts ===
declare var p: Promise<boolean>;
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
const a = p.then();
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 2, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const b = p.then(b => 1);
>b : Symbol(b, Decl(promiseTypeStrictNull.ts, 3, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>b : Symbol(b, Decl(promiseTypeStrictNull.ts, 3, 17))
const c = p.then(b => 1, e => 'error');
>c : Symbol(c, Decl(promiseTypeStrictNull.ts, 4, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>b : Symbol(b, Decl(promiseTypeStrictNull.ts, 4, 17))
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 4, 24))
const d = p.then(b => 1, e => { });
>d : Symbol(d, Decl(promiseTypeStrictNull.ts, 5, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>b : Symbol(b, Decl(promiseTypeStrictNull.ts, 5, 17))
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 5, 24))
const e = p.then(b => 1, e => { throw Error(); });
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 6, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>b : Symbol(b, Decl(promiseTypeStrictNull.ts, 6, 17))
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 6, 24))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
const f = p.then(b => 1, e => Promise.reject(Error()));
>f : Symbol(f, Decl(promiseTypeStrictNull.ts, 7, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>b : Symbol(b, Decl(promiseTypeStrictNull.ts, 7, 17))
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 7, 24))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
const g = p.catch(e => 'error');
>g : Symbol(g, Decl(promiseTypeStrictNull.ts, 8, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 8, 18))
const h = p.catch(e => { });
>h : Symbol(h, Decl(promiseTypeStrictNull.ts, 9, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 9, 18))
const i = p.catch(e => { throw Error(); });
>i : Symbol(i, Decl(promiseTypeStrictNull.ts, 10, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 10, 18))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
const j = p.catch(e => Promise.reject(Error()));
>j : Symbol(j, Decl(promiseTypeStrictNull.ts, 11, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 11, 18))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
async function A() {
>A : Symbol(A, Decl(promiseTypeStrictNull.ts, 11, 48))
const a = await p;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 14, 9))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
return a;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 14, 9))
}
async function B() {
>B : Symbol(B, Decl(promiseTypeStrictNull.ts, 16, 1))
const a = await p;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 19, 9))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
return 1;
}
// NOTE: This reports a "No best comment type exists among return expressions." error, and is
// ignored to get the types result for the test.
// async function C() {
// try {
// const a = await p;
// return 1;
// }
// catch (e) {
// return 'error';
// }
// }
async function D() {
>D : Symbol(D, Decl(promiseTypeStrictNull.ts, 21, 1))
try {
const a = await p;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 37, 13))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
return 1;
}
catch (e) {
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 40, 11))
}
}
async function E() {
>E : Symbol(E, Decl(promiseTypeStrictNull.ts, 42, 1))
try {
const a = await p;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 46, 13))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
return 1;
}
catch (e) {
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 49, 11))
throw Error();
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
}
}
async function F() {
>F : Symbol(F, Decl(promiseTypeStrictNull.ts, 52, 1))
try {
const a = await p;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 56, 13))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
return 1;
}
catch (e) {
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 59, 11))
return Promise.reject(Error());
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
}
}
async function G() {
>G : Symbol(G, Decl(promiseTypeStrictNull.ts, 62, 1))
try {
const a = await p;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 66, 13))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
return a;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 66, 13))
}
catch (e) {
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 69, 11))
return;
}
}
async function H() {
>H : Symbol(H, Decl(promiseTypeStrictNull.ts, 72, 1))
try {
const a = await p;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 76, 13))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
return a;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 76, 13))
}
catch (e) {
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 79, 11))
throw Error();
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
}
}
async function I() {
>I : Symbol(I, Decl(promiseTypeStrictNull.ts, 82, 1))
try {
const a = await p;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 86, 13))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
return a;
>a : Symbol(a, Decl(promiseTypeStrictNull.ts, 86, 13))
}
catch (e) {
>e : Symbol(e, Decl(promiseTypeStrictNull.ts, 89, 11))
return Promise.reject(Error());
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
}
}
// addresses github issue #4903:
const p00 = p.catch();
>p00 : Symbol(p00, Decl(promiseTypeStrictNull.ts, 96, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p01 = p.catch(undefined);
>p01 : Symbol(p01, Decl(promiseTypeStrictNull.ts, 97, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p07 = p.catch(null);
>p07 : Symbol(p07, Decl(promiseTypeStrictNull.ts, 98, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p02 = p.catch(() => 1);
>p02 : Symbol(p02, Decl(promiseTypeStrictNull.ts, 99, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p03 = p.catch(() => {});
>p03 : Symbol(p03, Decl(promiseTypeStrictNull.ts, 100, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p04 = p.catch(() => {throw 1});
>p04 : Symbol(p04, Decl(promiseTypeStrictNull.ts, 101, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p05 = p.catch(() => Promise.reject(1));
>p05 : Symbol(p05, Decl(promiseTypeStrictNull.ts, 102, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p06 = p.catch(() => Promise.resolve(1));
>p06 : Symbol(p06, Decl(promiseTypeStrictNull.ts, 103, 5))
>p.catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>catch : Symbol(Promise.catch, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p10 = p.then();
>p10 : Symbol(p10, Decl(promiseTypeStrictNull.ts, 105, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p20 = p.then(undefined);
>p20 : Symbol(p20, Decl(promiseTypeStrictNull.ts, 107, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p21 = p.then(() => 1);
>p21 : Symbol(p21, Decl(promiseTypeStrictNull.ts, 108, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p22 = p.then(() => {});
>p22 : Symbol(p22, Decl(promiseTypeStrictNull.ts, 109, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p23 = p.then(() => {throw 1});
>p23 : Symbol(p23, Decl(promiseTypeStrictNull.ts, 110, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p24 = p.then(() => Promise.resolve(1));
>p24 : Symbol(p24, Decl(promiseTypeStrictNull.ts, 111, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p25 = p.then(() => Promise.reject(1));
>p25 : Symbol(p25, Decl(promiseTypeStrictNull.ts, 112, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p30 = p.then(undefined, undefined);
>p30 : Symbol(p30, Decl(promiseTypeStrictNull.ts, 114, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
>undefined : Symbol(undefined)
const p31 = p.then(undefined, () => 1);
>p31 : Symbol(p31, Decl(promiseTypeStrictNull.ts, 115, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p32 = p.then(undefined, () => {});
>p32 : Symbol(p32, Decl(promiseTypeStrictNull.ts, 116, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p33 = p.then(undefined, () => {throw 1});
>p33 : Symbol(p33, Decl(promiseTypeStrictNull.ts, 117, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p34 = p.then(undefined, () => Promise.resolve(1));
>p34 : Symbol(p34, Decl(promiseTypeStrictNull.ts, 118, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p35 = p.then(undefined, () => Promise.reject(1));
>p35 : Symbol(p35, Decl(promiseTypeStrictNull.ts, 119, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p40 = p.then(() => "1", undefined);
>p40 : Symbol(p40, Decl(promiseTypeStrictNull.ts, 121, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p41 = p.then(() => "1", () => 1);
>p41 : Symbol(p41, Decl(promiseTypeStrictNull.ts, 122, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p42 = p.then(() => "1", () => {});
>p42 : Symbol(p42, Decl(promiseTypeStrictNull.ts, 123, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p43 = p.then(() => "1", () => {throw 1});
>p43 : Symbol(p43, Decl(promiseTypeStrictNull.ts, 124, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p44 = p.then(() => "1", () => Promise.resolve(1));
>p44 : Symbol(p44, Decl(promiseTypeStrictNull.ts, 125, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p45 = p.then(() => "1", () => Promise.reject(1));
>p45 : Symbol(p45, Decl(promiseTypeStrictNull.ts, 126, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p50 = p.then(() => {}, undefined);
>p50 : Symbol(p50, Decl(promiseTypeStrictNull.ts, 128, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p51 = p.then(() => {}, () => 1);
>p51 : Symbol(p51, Decl(promiseTypeStrictNull.ts, 129, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p52 = p.then(() => {}, () => {});
>p52 : Symbol(p52, Decl(promiseTypeStrictNull.ts, 130, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p53 = p.then(() => {}, () => {throw 1});
>p53 : Symbol(p53, Decl(promiseTypeStrictNull.ts, 131, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p54 = p.then(() => {}, () => Promise.resolve(1));
>p54 : Symbol(p54, Decl(promiseTypeStrictNull.ts, 132, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p55 = p.then(() => {}, () => Promise.reject(1));
>p55 : Symbol(p55, Decl(promiseTypeStrictNull.ts, 133, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p60 = p.then(() => {throw 1}, undefined);
>p60 : Symbol(p60, Decl(promiseTypeStrictNull.ts, 135, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p61 = p.then(() => {throw 1}, () => 1);
>p61 : Symbol(p61, Decl(promiseTypeStrictNull.ts, 136, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p62 = p.then(() => {throw 1}, () => {});
>p62 : Symbol(p62, Decl(promiseTypeStrictNull.ts, 137, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p63 = p.then(() => {throw 1}, () => {throw 1});
>p63 : Symbol(p63, Decl(promiseTypeStrictNull.ts, 138, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p64 = p.then(() => {throw 1}, () => Promise.resolve(1));
>p64 : Symbol(p64, Decl(promiseTypeStrictNull.ts, 139, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p65 = p.then(() => {throw 1}, () => Promise.reject(1));
>p65 : Symbol(p65, Decl(promiseTypeStrictNull.ts, 140, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p70 = p.then(() => Promise.resolve("1"), undefined);
>p70 : Symbol(p70, Decl(promiseTypeStrictNull.ts, 142, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p71 = p.then(() => Promise.resolve("1"), () => 1);
>p71 : Symbol(p71, Decl(promiseTypeStrictNull.ts, 143, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p72 = p.then(() => Promise.resolve("1"), () => {});
>p72 : Symbol(p72, Decl(promiseTypeStrictNull.ts, 144, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p73 = p.then(() => Promise.resolve("1"), () => {throw 1});
>p73 : Symbol(p73, Decl(promiseTypeStrictNull.ts, 145, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
>p74 : Symbol(p74, Decl(promiseTypeStrictNull.ts, 146, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
>p75 : Symbol(p75, Decl(promiseTypeStrictNull.ts, 147, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p80 = p.then(() => Promise.reject(1), undefined);
>p80 : Symbol(p80, Decl(promiseTypeStrictNull.ts, 149, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>undefined : Symbol(undefined)
const p81 = p.then(() => Promise.reject(1), () => 1);
>p81 : Symbol(p81, Decl(promiseTypeStrictNull.ts, 150, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p82 = p.then(() => Promise.reject(1), () => {});
>p82 : Symbol(p82, Decl(promiseTypeStrictNull.ts, 151, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p83 = p.then(() => Promise.reject(1), () => {throw 1});
>p83 : Symbol(p83, Decl(promiseTypeStrictNull.ts, 152, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
>p84 : Symbol(p84, Decl(promiseTypeStrictNull.ts, 153, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));
>p85 : Symbol(p85, Decl(promiseTypeStrictNull.ts, 154, 5))
>p.then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>p : Symbol(p, Decl(promiseTypeStrictNull.ts, 0, 11))
>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise.reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
>reject : Symbol(PromiseConstructor.reject, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))

View File

@@ -0,0 +1,900 @@
=== tests/cases/compiler/promiseTypeStrictNull.ts ===
declare var p: Promise<boolean>;
>p : Promise<boolean>
>Promise : Promise<T>
const a = p.then();
>a : Promise<boolean>
>p.then() : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
const b = p.then(b => 1);
>b : Promise<number>
>p.then(b => 1) : Promise<number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : number
const c = p.then(b => 1, e => 'error');
>c : Promise<string | number>
>p.then(b => 1, e => 'error') : Promise<string | number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : number
>e => 'error' : (e: any) => string
>e : any
>'error' : string
const d = p.then(b => 1, e => { });
>d : Promise<number | void>
>p.then(b => 1, e => { }) : Promise<number | void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : number
>e => { } : (e: any) => void
>e : any
const e = p.then(b => 1, e => { throw Error(); });
>e : Promise<number>
>p.then(b => 1, e => { throw Error(); }) : Promise<number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : number
>e => { throw Error(); } : (e: any) => never
>e : any
>Error() : Error
>Error : ErrorConstructor
const f = p.then(b => 1, e => Promise.reject(Error()));
>f : Promise<number>
>p.then(b => 1, e => Promise.reject(Error())) : Promise<number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>b => 1 : (b: boolean) => number
>b : boolean
>1 : number
>e => Promise.reject(Error()) : (e: any) => Promise<never>
>e : any
>Promise.reject(Error()) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Error() : Error
>Error : ErrorConstructor
const g = p.catch(e => 'error');
>g : Promise<string | boolean>
>p.catch(e => 'error') : Promise<string | boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>e => 'error' : (e: any) => string
>e : any
>'error' : string
const h = p.catch(e => { });
>h : Promise<boolean | void>
>p.catch(e => { }) : Promise<boolean | void>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>e => { } : (e: any) => void
>e : any
const i = p.catch(e => { throw Error(); });
>i : Promise<boolean>
>p.catch(e => { throw Error(); }) : Promise<boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>e => { throw Error(); } : (e: any) => never
>e : any
>Error() : Error
>Error : ErrorConstructor
const j = p.catch(e => Promise.reject(Error()));
>j : Promise<boolean>
>p.catch(e => Promise.reject(Error())) : Promise<boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>e => Promise.reject(Error()) : (e: any) => Promise<never>
>e : any
>Promise.reject(Error()) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Error() : Error
>Error : ErrorConstructor
async function A() {
>A : () => Promise<boolean>
const a = await p;
>a : boolean
>await p : boolean
>p : Promise<boolean>
return a;
>a : boolean
}
async function B() {
>B : () => Promise<number>
const a = await p;
>a : boolean
>await p : boolean
>p : Promise<boolean>
return 1;
>1 : number
}
// NOTE: This reports a "No best comment type exists among return expressions." error, and is
// ignored to get the types result for the test.
// async function C() {
// try {
// const a = await p;
// return 1;
// }
// catch (e) {
// return 'error';
// }
// }
async function D() {
>D : () => Promise<number | undefined>
try {
const a = await p;
>a : boolean
>await p : boolean
>p : Promise<boolean>
return 1;
>1 : number
}
catch (e) {
>e : any
}
}
async function E() {
>E : () => Promise<number>
try {
const a = await p;
>a : boolean
>await p : boolean
>p : Promise<boolean>
return 1;
>1 : number
}
catch (e) {
>e : any
throw Error();
>Error() : Error
>Error : ErrorConstructor
}
}
async function F() {
>F : () => Promise<number>
try {
const a = await p;
>a : boolean
>await p : boolean
>p : Promise<boolean>
return 1;
>1 : number
}
catch (e) {
>e : any
return Promise.reject(Error());
>Promise.reject(Error()) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Error() : Error
>Error : ErrorConstructor
}
}
async function G() {
>G : () => Promise<boolean | undefined>
try {
const a = await p;
>a : boolean
>await p : boolean
>p : Promise<boolean>
return a;
>a : boolean
}
catch (e) {
>e : any
return;
}
}
async function H() {
>H : () => Promise<boolean>
try {
const a = await p;
>a : boolean
>await p : boolean
>p : Promise<boolean>
return a;
>a : boolean
}
catch (e) {
>e : any
throw Error();
>Error() : Error
>Error : ErrorConstructor
}
}
async function I() {
>I : () => Promise<boolean>
try {
const a = await p;
>a : boolean
>await p : boolean
>p : Promise<boolean>
return a;
>a : boolean
}
catch (e) {
>e : any
return Promise.reject(Error());
>Promise.reject(Error()) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Error() : Error
>Error : ErrorConstructor
}
}
// addresses github issue #4903:
const p00 = p.catch();
>p00 : Promise<boolean>
>p.catch() : Promise<boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
const p01 = p.catch(undefined);
>p01 : Promise<boolean>
>p.catch(undefined) : Promise<boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>undefined : undefined
const p07 = p.catch(null);
>p07 : Promise<boolean>
>p.catch(null) : Promise<boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>null : null
const p02 = p.catch(() => 1);
>p02 : Promise<number | boolean>
>p.catch(() => 1) : Promise<number | boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => 1 : () => number
>1 : number
const p03 = p.catch(() => {});
>p03 : Promise<boolean | void>
>p.catch(() => {}) : Promise<boolean | void>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => {} : () => void
const p04 = p.catch(() => {throw 1});
>p04 : Promise<boolean>
>p.catch(() => {throw 1}) : Promise<boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => {throw 1} : () => never
>1 : number
const p05 = p.catch(() => Promise.reject(1));
>p05 : Promise<boolean>
>p.catch(() => Promise.reject(1)) : Promise<boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p06 = p.catch(() => Promise.resolve(1));
>p06 : Promise<number | boolean>
>p.catch(() => Promise.resolve(1)) : Promise<number | boolean>
>p.catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>p : Promise<boolean>
>catch : { (onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; }
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p10 = p.then();
>p10 : Promise<boolean>
>p.then() : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
const p20 = p.then(undefined);
>p20 : Promise<boolean>
>p.then(undefined) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
const p21 = p.then(() => 1);
>p21 : Promise<number>
>p.then(() => 1) : Promise<number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => 1 : () => number
>1 : number
const p22 = p.then(() => {});
>p22 : Promise<void>
>p.then(() => {}) : Promise<void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
const p23 = p.then(() => {throw 1});
>p23 : Promise<boolean>
>p.then(() => {throw 1}) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
const p24 = p.then(() => Promise.resolve(1));
>p24 : Promise<number>
>p.then(() => Promise.resolve(1)) : Promise<number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p25 = p.then(() => Promise.reject(1));
>p25 : Promise<boolean>
>p.then(() => Promise.reject(1)) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p30 = p.then(undefined, undefined);
>p30 : Promise<boolean>
>p.then(undefined, undefined) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>undefined : undefined
const p31 = p.then(undefined, () => 1);
>p31 : Promise<number | boolean>
>p.then(undefined, () => 1) : Promise<number | boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => 1 : () => number
>1 : number
const p32 = p.then(undefined, () => {});
>p32 : Promise<boolean | void>
>p.then(undefined, () => {}) : Promise<boolean | void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => {} : () => void
const p33 = p.then(undefined, () => {throw 1});
>p33 : Promise<boolean>
>p.then(undefined, () => {throw 1}) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => {throw 1} : () => never
>1 : number
const p34 = p.then(undefined, () => Promise.resolve(1));
>p34 : Promise<number | boolean>
>p.then(undefined, () => Promise.resolve(1)) : Promise<number | boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p35 = p.then(undefined, () => Promise.reject(1));
>p35 : Promise<boolean>
>p.then(undefined, () => Promise.reject(1)) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>undefined : undefined
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p40 = p.then(() => "1", undefined);
>p40 : Promise<string>
>p.then(() => "1", undefined) : Promise<string>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>undefined : undefined
const p41 = p.then(() => "1", () => 1);
>p41 : Promise<string | number>
>p.then(() => "1", () => 1) : Promise<string | number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => 1 : () => number
>1 : number
const p42 = p.then(() => "1", () => {});
>p42 : Promise<string | void>
>p.then(() => "1", () => {}) : Promise<string | void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => {} : () => void
const p43 = p.then(() => "1", () => {throw 1});
>p43 : Promise<string>
>p.then(() => "1", () => {throw 1}) : Promise<string>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => {throw 1} : () => never
>1 : number
const p44 = p.then(() => "1", () => Promise.resolve(1));
>p44 : Promise<string | number>
>p.then(() => "1", () => Promise.resolve(1)) : Promise<string | number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p45 = p.then(() => "1", () => Promise.reject(1));
>p45 : Promise<string>
>p.then(() => "1", () => Promise.reject(1)) : Promise<string>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => "1" : () => string
>"1" : string
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p50 = p.then(() => {}, undefined);
>p50 : Promise<void>
>p.then(() => {}, undefined) : Promise<void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>undefined : undefined
const p51 = p.then(() => {}, () => 1);
>p51 : Promise<number | void>
>p.then(() => {}, () => 1) : Promise<number | void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => 1 : () => number
>1 : number
const p52 = p.then(() => {}, () => {});
>p52 : Promise<void>
>p.then(() => {}, () => {}) : Promise<void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => {} : () => void
const p53 = p.then(() => {}, () => {throw 1});
>p53 : Promise<void>
>p.then(() => {}, () => {throw 1}) : Promise<void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => {throw 1} : () => never
>1 : number
const p54 = p.then(() => {}, () => Promise.resolve(1));
>p54 : Promise<number | void>
>p.then(() => {}, () => Promise.resolve(1)) : Promise<number | void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p55 = p.then(() => {}, () => Promise.reject(1));
>p55 : Promise<void>
>p.then(() => {}, () => Promise.reject(1)) : Promise<void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {} : () => void
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p60 = p.then(() => {throw 1}, undefined);
>p60 : Promise<boolean>
>p.then(() => {throw 1}, undefined) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>undefined : undefined
const p61 = p.then(() => {throw 1}, () => 1);
>p61 : Promise<number | boolean>
>p.then(() => {throw 1}, () => 1) : Promise<number | boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => 1 : () => number
>1 : number
const p62 = p.then(() => {throw 1}, () => {});
>p62 : Promise<boolean | void>
>p.then(() => {throw 1}, () => {}) : Promise<boolean | void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => {} : () => void
const p63 = p.then(() => {throw 1}, () => {throw 1});
>p63 : Promise<boolean>
>p.then(() => {throw 1}, () => {throw 1}) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => {throw 1} : () => never
>1 : number
const p64 = p.then(() => {throw 1}, () => Promise.resolve(1));
>p64 : Promise<number | boolean>
>p.then(() => {throw 1}, () => Promise.resolve(1)) : Promise<number | boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p65 = p.then(() => {throw 1}, () => Promise.reject(1));
>p65 : Promise<boolean>
>p.then(() => {throw 1}, () => Promise.reject(1)) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => {throw 1} : () => never
>1 : number
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p70 = p.then(() => Promise.resolve("1"), undefined);
>p70 : Promise<string>
>p.then(() => Promise.resolve("1"), undefined) : Promise<string>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>undefined : undefined
const p71 = p.then(() => Promise.resolve("1"), () => 1);
>p71 : Promise<string | number>
>p.then(() => Promise.resolve("1"), () => 1) : Promise<string | number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => 1 : () => number
>1 : number
const p72 = p.then(() => Promise.resolve("1"), () => {});
>p72 : Promise<string | void>
>p.then(() => Promise.resolve("1"), () => {}) : Promise<string | void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => {} : () => void
const p73 = p.then(() => Promise.resolve("1"), () => {throw 1});
>p73 : Promise<string>
>p.then(() => Promise.resolve("1"), () => {throw 1}) : Promise<string>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => {throw 1} : () => never
>1 : number
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
>p74 : Promise<string | number>
>p.then(() => Promise.resolve("1"), () => Promise.resolve(1)) : Promise<string | number>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
>p75 : Promise<string>
>p.then(() => Promise.resolve("1"), () => Promise.reject(1)) : Promise<string>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.resolve("1") : () => Promise<string>
>Promise.resolve("1") : Promise<string>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>"1" : string
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
const p80 = p.then(() => Promise.reject(1), undefined);
>p80 : Promise<boolean>
>p.then(() => Promise.reject(1), undefined) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>undefined : undefined
const p81 = p.then(() => Promise.reject(1), () => 1);
>p81 : Promise<number | boolean>
>p.then(() => Promise.reject(1), () => 1) : Promise<number | boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => 1 : () => number
>1 : number
const p82 = p.then(() => Promise.reject(1), () => {});
>p82 : Promise<boolean | void>
>p.then(() => Promise.reject(1), () => {}) : Promise<boolean | void>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => {} : () => void
const p83 = p.then(() => Promise.reject(1), () => {throw 1});
>p83 : Promise<boolean>
>p.then(() => Promise.reject(1), () => {throw 1}) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => {throw 1} : () => never
>1 : number
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
>p84 : Promise<number | boolean>
>p.then(() => Promise.reject(1), () => Promise.resolve(1)) : Promise<number | boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => Promise.resolve(1) : () => Promise<number>
>Promise.resolve(1) : Promise<number>
>Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>Promise : PromiseConstructor
>resolve : { <T>(value: T | PromiseLike<T>): Promise<T>; (): Promise<void>; }
>1 : number
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));
>p85 : Promise<boolean>
>p.then(() => Promise.reject(1), () => Promise.reject(1)) : Promise<boolean>
>p.then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>p : Promise<boolean>
>then : { (onfulfilled?: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected?: ((reason: any) => boolean | PromiseLike<boolean>) | null | undefined): Promise<boolean>; <TResult>(onfulfilled: ((value: boolean) => boolean | PromiseLike<boolean>) | null | undefined, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<boolean | TResult>; <TResult>(onfulfilled: (value: boolean) => TResult | PromiseLike<TResult>, onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: boolean) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number
>() => Promise.reject(1) : () => Promise<never>
>Promise.reject(1) : Promise<never>
>Promise.reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>Promise : PromiseConstructor
>reject : { (reason: any): Promise<never>; <T>(reason: any): Promise<T>; }
>1 : number

View File

@@ -54,14 +54,14 @@ function f2(x: T1): T2 {
var x3 = f1()
>x3 : Promise<{ __t3: string; }>
>f1() .then(f2, (e: Error) => { throw e;}) .then((x: T2) => { return { __t3: x.__t2 + "bar" };}) : Promise<{ __t3: string; }>
>f1() .then(f2, (e: Error) => { throw e;}) .then : { <TResult1, TResult2>(onfulfilled: (value: T2) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: T2) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: T2) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<T2>; }
>f1() .then(f2, (e: Error) => { throw e;}) .then : { (onfulfilled?: (value: T2) => T2 | PromiseLike<T2>, onrejected?: (reason: any) => T2 | PromiseLike<T2>): Promise<T2>; <TResult>(onfulfilled: (value: T2) => T2 | PromiseLike<T2>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<T2 | TResult>; <TResult>(onfulfilled: (value: T2) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: T2) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>f1() .then(f2, (e: Error) => { throw e;}) : Promise<T2>
>f1() .then : { <TResult1, TResult2>(onfulfilled: (value: T1) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: T1) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: T1) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<T1>; }
>f1() .then : { (onfulfilled?: (value: T1) => T1 | PromiseLike<T1>, onrejected?: (reason: any) => T1 | PromiseLike<T1>): Promise<T1>; <TResult>(onfulfilled: (value: T1) => T1 | PromiseLike<T1>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<T1 | TResult>; <TResult>(onfulfilled: (value: T1) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: T1) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>f1() : Promise<T1>
>f1 : () => Promise<T1>
.then(f2, (e: Error) => {
>then : { <TResult1, TResult2>(onfulfilled: (value: T1) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: T1) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: T1) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<T1>; }
>then : { (onfulfilled?: (value: T1) => T1 | PromiseLike<T1>, onrejected?: (reason: any) => T1 | PromiseLike<T1>): Promise<T1>; <TResult>(onfulfilled: (value: T1) => T1 | PromiseLike<T1>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<T1 | TResult>; <TResult>(onfulfilled: (value: T1) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: T1) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>f2 : (x: T1) => T2
>(e: Error) => { throw e;} : (e: Error) => never
>e : Error
@@ -72,7 +72,7 @@ var x3 = f1()
})
.then((x: T2) => {
>then : { <TResult1, TResult2>(onfulfilled: (value: T2) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; <TResult>(onfulfilled: (value: T2) => TResult | PromiseLike<TResult>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult>(onfulfilled: (value: T2) => TResult | PromiseLike<TResult>): Promise<TResult>; (): Promise<T2>; }
>then : { (onfulfilled?: (value: T2) => T2 | PromiseLike<T2>, onrejected?: (reason: any) => T2 | PromiseLike<T2>): Promise<T2>; <TResult>(onfulfilled: (value: T2) => T2 | PromiseLike<T2>, onrejected: (reason: any) => TResult | PromiseLike<TResult>): Promise<T2 | TResult>; <TResult>(onfulfilled: (value: T2) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>; <TResult1, TResult2>(onfulfilled: (value: T2) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>; }
>(x: T2) => { return { __t3: x.__t2 + "bar" };} : (x: T2) => { __t3: string; }
>x : T2
>T2 : T2

View File

@@ -91,4 +91,66 @@ async function I() {
catch (e) {
return Promise.reject(Error());
}
}
}
// addresses github issue #4903:
const p00 = p.catch();
const p01 = p.catch(undefined);
const p07 = p.catch(null);
const p02 = p.catch(() => 1);
const p03 = p.catch(() => {});
const p04 = p.catch(() => {throw 1});
const p05 = p.catch(() => Promise.reject(1));
const p06 = p.catch(() => Promise.resolve(1));
const p10 = p.then();
const p20 = p.then(undefined);
const p21 = p.then(() => 1);
const p22 = p.then(() => {});
const p23 = p.then(() => {throw 1});
const p24 = p.then(() => Promise.resolve(1));
const p25 = p.then(() => Promise.reject(1));
const p30 = p.then(undefined, undefined);
const p31 = p.then(undefined, () => 1);
const p32 = p.then(undefined, () => {});
const p33 = p.then(undefined, () => {throw 1});
const p34 = p.then(undefined, () => Promise.resolve(1));
const p35 = p.then(undefined, () => Promise.reject(1));
const p40 = p.then(() => "1", undefined);
const p41 = p.then(() => "1", () => 1);
const p42 = p.then(() => "1", () => {});
const p43 = p.then(() => "1", () => {throw 1});
const p44 = p.then(() => "1", () => Promise.resolve(1));
const p45 = p.then(() => "1", () => Promise.reject(1));
const p50 = p.then(() => {}, undefined);
const p51 = p.then(() => {}, () => 1);
const p52 = p.then(() => {}, () => {});
const p53 = p.then(() => {}, () => {throw 1});
const p54 = p.then(() => {}, () => Promise.resolve(1));
const p55 = p.then(() => {}, () => Promise.reject(1));
const p60 = p.then(() => {throw 1}, undefined);
const p61 = p.then(() => {throw 1}, () => 1);
const p62 = p.then(() => {throw 1}, () => {});
const p63 = p.then(() => {throw 1}, () => {throw 1});
const p64 = p.then(() => {throw 1}, () => Promise.resolve(1));
const p65 = p.then(() => {throw 1}, () => Promise.reject(1));
const p70 = p.then(() => Promise.resolve("1"), undefined);
const p71 = p.then(() => Promise.resolve("1"), () => 1);
const p72 = p.then(() => Promise.resolve("1"), () => {});
const p73 = p.then(() => Promise.resolve("1"), () => {throw 1});
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
const p80 = p.then(() => Promise.reject(1), undefined);
const p81 = p.then(() => Promise.reject(1), () => 1);
const p82 = p.then(() => Promise.reject(1), () => {});
const p83 = p.then(() => Promise.reject(1), () => {throw 1});
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));

View File

@@ -0,0 +1,157 @@
// @target: es6
// @strictNullChecks: true
declare var p: Promise<boolean>;
const a = p.then();
const b = p.then(b => 1);
const c = p.then(b => 1, e => 'error');
const d = p.then(b => 1, e => { });
const e = p.then(b => 1, e => { throw Error(); });
const f = p.then(b => 1, e => Promise.reject(Error()));
const g = p.catch(e => 'error');
const h = p.catch(e => { });
const i = p.catch(e => { throw Error(); });
const j = p.catch(e => Promise.reject(Error()));
async function A() {
const a = await p;
return a;
}
async function B() {
const a = await p;
return 1;
}
// NOTE: This reports a "No best comment type exists among return expressions." error, and is
// ignored to get the types result for the test.
// async function C() {
// try {
// const a = await p;
// return 1;
// }
// catch (e) {
// return 'error';
// }
// }
async function D() {
try {
const a = await p;
return 1;
}
catch (e) {
}
}
async function E() {
try {
const a = await p;
return 1;
}
catch (e) {
throw Error();
}
}
async function F() {
try {
const a = await p;
return 1;
}
catch (e) {
return Promise.reject(Error());
}
}
async function G() {
try {
const a = await p;
return a;
}
catch (e) {
return;
}
}
async function H() {
try {
const a = await p;
return a;
}
catch (e) {
throw Error();
}
}
async function I() {
try {
const a = await p;
return a;
}
catch (e) {
return Promise.reject(Error());
}
}
// addresses github issue #4903:
const p00 = p.catch();
const p01 = p.catch(undefined);
const p07 = p.catch(null);
const p02 = p.catch(() => 1);
const p03 = p.catch(() => {});
const p04 = p.catch(() => {throw 1});
const p05 = p.catch(() => Promise.reject(1));
const p06 = p.catch(() => Promise.resolve(1));
const p10 = p.then();
const p20 = p.then(undefined);
const p21 = p.then(() => 1);
const p22 = p.then(() => {});
const p23 = p.then(() => {throw 1});
const p24 = p.then(() => Promise.resolve(1));
const p25 = p.then(() => Promise.reject(1));
const p30 = p.then(undefined, undefined);
const p31 = p.then(undefined, () => 1);
const p32 = p.then(undefined, () => {});
const p33 = p.then(undefined, () => {throw 1});
const p34 = p.then(undefined, () => Promise.resolve(1));
const p35 = p.then(undefined, () => Promise.reject(1));
const p40 = p.then(() => "1", undefined);
const p41 = p.then(() => "1", () => 1);
const p42 = p.then(() => "1", () => {});
const p43 = p.then(() => "1", () => {throw 1});
const p44 = p.then(() => "1", () => Promise.resolve(1));
const p45 = p.then(() => "1", () => Promise.reject(1));
const p50 = p.then(() => {}, undefined);
const p51 = p.then(() => {}, () => 1);
const p52 = p.then(() => {}, () => {});
const p53 = p.then(() => {}, () => {throw 1});
const p54 = p.then(() => {}, () => Promise.resolve(1));
const p55 = p.then(() => {}, () => Promise.reject(1));
const p60 = p.then(() => {throw 1}, undefined);
const p61 = p.then(() => {throw 1}, () => 1);
const p62 = p.then(() => {throw 1}, () => {});
const p63 = p.then(() => {throw 1}, () => {throw 1});
const p64 = p.then(() => {throw 1}, () => Promise.resolve(1));
const p65 = p.then(() => {throw 1}, () => Promise.reject(1));
const p70 = p.then(() => Promise.resolve("1"), undefined);
const p71 = p.then(() => Promise.resolve("1"), () => 1);
const p72 = p.then(() => Promise.resolve("1"), () => {});
const p73 = p.then(() => Promise.resolve("1"), () => {throw 1});
const p74 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1));
const p75 = p.then(() => Promise.resolve("1"), () => Promise.reject(1));
const p80 = p.then(() => Promise.reject(1), undefined);
const p81 = p.then(() => Promise.reject(1), () => 1);
const p82 = p.then(() => Promise.reject(1), () => {});
const p83 = p.then(() => Promise.reject(1), () => {throw 1});
const p84 = p.then(() => Promise.reject(1), () => Promise.resolve(1));
const p85 = p.then(() => Promise.reject(1), () => Promise.reject(1));