Resolved type

A narrower version of TypeScript 4.5's Awaited type which Recursively unwraps the "awaited type", emulating the behavior of await.

type Resolved<T> = (T extends { then(onfulfilled: F) => any } ? (F extends (value: V) => any ? Resolved<V> : never) : T)