tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(6,23): error TS1055: Type '{}' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(6,23): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.
tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(7,23): error TS1055: Type 'any' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(8,23): error TS1055: Type 'number' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(8,23): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.
tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(9,23): error TS1055: Type 'PromiseLike' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(10,23): error TS1055: Type 'typeof Thenable' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
  Construct signature return types 'Thenable' and 'PromiseLike<T>' are incompatible.
    The types returned by 'then(...)' are incompatible between these types.
      Type 'void' is not assignable to type 'PromiseLike<TResult1 | TResult2>'.
tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(17,16): error TS1058: The return type of an async function must either be a valid promise or must not contain a callable 'then' member.
tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(23,25): error TS1320: Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member.


==== tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts (9 errors) ====
    declare class Thenable { then(): void; }
    declare let a: any;
    declare let obj: { then: string; };
    declare let thenable: Thenable;
    async function fn1() { } // valid: Promise<void>
    async function fn2(): { } { } // error
                          ~~~
!!! error TS1055: Type '{}' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
                          ~~~
!!! error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.
    async function fn3(): any { } // error
                          ~~~
!!! error TS1055: Type 'any' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
    async function fn4(): number { } // error
                          ~~~~~~
!!! error TS1055: Type 'number' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
                          ~~~~~~
!!! error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.
    async function fn5(): PromiseLike<void> { } // error
                          ~~~~~~~~~~~~~~~~~
!!! error TS1055: Type 'PromiseLike' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
    async function fn6(): Thenable { } // error
                          ~~~~~~~~
!!! error TS1055: Type 'typeof Thenable' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
!!! error TS1055:   Construct signature return types 'Thenable' and 'PromiseLike<T>' are incompatible.
!!! error TS1055:     The types returned by 'then(...)' are incompatible between these types.
!!! error TS1055:       Type 'void' is not assignable to type 'PromiseLike<TResult1 | TResult2>'.
    async function fn7() { return; } // valid: Promise<void>
    async function fn8() { return 1; } // valid: Promise<number>
    async function fn9() { return null; } // valid: Promise<any>
    async function fn10() { return undefined; } // valid: Promise<any>
    async function fn11() { return a; } // valid: Promise<any>
    async function fn12() { return obj; } // valid: Promise<{ then: string; }>
    async function fn13() { return thenable; } // error
                   ~~~~
!!! error TS1058: The return type of an async function must either be a valid promise or must not contain a callable 'then' member.
    async function fn14() { await 1; } // valid: Promise<void>
    async function fn15() { await null; } // valid: Promise<void>
    async function fn16() { await undefined; } // valid: Promise<void>
    async function fn17() { await a; } // valid: Promise<void>
    async function fn18() { await obj; } // valid: Promise<void>
    async function fn19() { await thenable; } // error
                            ~~~~~~~~~~~~~~
!!! error TS1320: Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member.
    