A+ 準拠の Promises と古い jQuery Deferreds の最大の違いは、A+ Promises には適切なエラー処理があることです。この簡単なテストを実行することで、jQuery 3 の promise が適切なエラー処理を行うようになったことを確認できます。
function test(name, $) {
var $name = $('<td>').text(name);
var $result = $('<td>');
var $row = $('<tr>')
.append($name)
.append($result)
.appendTo('tbody');
var def = $.Deferred();
def.rejectWith(new Error("Error"));
def.then(undefined, function() {
$result.text('Fail').css('color', 'red'); // This will be overriden by success case
}).then(function() {
$result.text('Success').css('color', 'green');
});
}
test('jQuery 1', $1);
test('jQuery 2', $2);
test('jQuery 3', $3);
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script>
var $1 = $;
$.noConflict();
</script>
<script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>
<script>
var $2 = $;
$.noConflict();
</script>
<script src="https://code.jquery.com/jquery-3.0.0-beta1.js"></script>
<script>
var $3 = $;
$.noConflict();
</script>
<table>
<thead>
<tr>
<td>Version</td>
<td>Result</td>
</tr>
</thead>
<tbody>
</tbody>
</table>