type ThenArg = T extends PromiseLike ? U : T export type PromiseOf = ThenArg