.done()
terminates the promise chain, making sure nothing else can attach further steps. This means that the jQuery promise implementation can throw any unhandled exception, since no one can possible handle it using .fail()
.
In practical terms, if you do not plan to attach more steps to a promise, you should use .done()
. For more details see why promises need to be done