function isPromise ( ) { return Promise . resolve ( 1 ) ; } function maybePromise ( ) { return Promise . resolve ( 1 ) ; } type Future = Promise < number > ; function aliasedPromise ( ) { return Promise . resolve ( 1 ) ; } class Extended extends Promise < number > { } function extendedPromise ( ) { return Promise . resolve ( 1 ) ; } function usePromise ( maybePromise ) { return false ; } async function returnLaterPromise ( ) { return ( ) => Promise . resolve ( 1 ) ; } async function unusedPromises ( ) { isPromise ( ) ; maybePromise ( ) ; aliasedPromise ( ) ; extendedPromise ( ) ; const later = await returnLaterPromise ( ) ; later ( ) ; } async function hasAwait ( ) { await isPromise ( ) ; await maybePromise ( ) ; await aliasedPromise ( ) ; await extendedPromise ( ) ; const later = await returnLaterPromise ( ) ; await later ( ) ; usePromise ( maybePromise ( ) ) ; } function nonAsyncFunction ( ) { isPromise ( ) ; maybePromise ( ) ; aliasedPromise ( ) ; extendedPromise ( ) ; const future = maybePromise ( ) ; usePromise ( future ) ; }