Recursively unwrap Promises.
Awaited<T>
type T = Promise<Promise<number>>; type Val = Awaited<T>; const v: Val = 100;