This function is most likely an artifact of before promises got standardized. One way promises took off and became so ubiquitous is different implementations could interop seamlessly. And the reason for that is a promise was defined as 'an object or function having a then method which returns a promise when called'.
Doesn't excuse the JS ecosystem and JS as a whole, which truly is a mess. But there's a history behind these things.