jQuery deferred objects were introduced at a time when there was no consistent way to handle asynchronous behavior in JavaScript code. Promises help us orchestrate asynchronous stuff, such as multiple HTTP requests, file reads, animations, and so on. Promises aren't exclusive to JavaScript, nor are they a new idea. The best way to think about a promise is as a contract that promises to resolve a value eventually.
Now that promises are officially part of JavaScript, jQuery now fully supports promises. That is, jQuery deferred objects behave just like any other promise. This is important, as we'll see in this section, because it means that we can use jQuery deferreds to compose complex asynchronous behavior with other code that return native promises.