var d = $.Deferred(); setTimeout(function(){ d.resolve(); }, 200); var jQueryPromise = d.promise(); jQueryPromise .then(function(){ throw new Error('JQuery - catch me if you can!'); }) .then(null, function(reason){ log('I catched you', reason); }); Promise.resolve() .then(jQueryPromise) .then(function(){ throw new Error('Wrapped JQuery - catch me if you can!'); }) .then(null, function(reason){ log('I catched you', reason); }); function log(){ var strings = Array.prototype.slice.call(arguments); var node = document.createElement('div'); node.innerText = strings.join(' '); document.getElementById('log').appendChild(node); }