In analogy you make a promise and either you fulfill or break your promise.
A good use case for in Lightning is handling responses from asynchronous operations in which you pass a callback function. Then that callback function can make another asynchronous operation. Keep on nesting and you can easily eventually end with what they sometimes call callback hell as your code can be hard to manage.
I defined this as a helper method. It calls an apex method and depending on response and getState I mapped it to either resolve or reject.
Here we called the p variable followed by a .then and the special callback function for Aura which is $A.getCallback. You can then chain another promise by calling and returning that promise. The next then can accept a parameter from the previous promise.
With Promises, this is more readable than a nested callback and easier to manage.
I hope you find this basic tip useful. Hit the comments below if you have questions.