Even the ES6 Promises implementation supports this:
Promise.all([{
then: function(r) {
r(3);
}
}]).then(function(result) {
console.log(result);
});
Here the plain object with then could have been any promise implementation, even jQuery, and it still works.