A common use case that I, and many others, have, is that I have a function, f. This function may be async, and return a Promise, or it may not - I don’t wish to have to know. However, I'd like to wrap it in a Promise so that if it is async, or if it throws, I can lean on Promise semantics and .catch to handle it. The typical “easy to remember” way this is achieved in JS Promises is with Promise.re