A Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.

You can use ES6 Promises in JavaScript code. Promises can simplify code that handles the success or failure of asynchronous calls, or code that chains together multiple asynchronous calls. If the browser doesn’t provide a native version, the framework uses a polyfill so that promises work in all browsers supported for Lightning Experience

Lightning component developer guide: Js Promises