Within the type definitions for Bluebird promises, there is a catch function that has the following definition:
catch<U = R>(onReject: ((error: any) => Resolvable<U>) | undefined | null): Bluebird<U | R>;
The symbol "R" is derived from the Bluebird class declaration itself, while "U" serves as the initial type parameter across all of Bluebird's functions.
What exactly does <U = R>
signify in this context?