The value that may or may not be a promise
The callback to call with the value returned when the promise is resolved or when the value is returned directly.
Whet the callback returns, if the input is a promise, it will return a promise that resolves to the value returned by the callback. If the input is not a promise, it will return the value returned by the callback directly.
A funtion to help with processing values that may or may not be promises