In analogy you make a promise and either you fulfil 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.
I hope you find this basic tip useful. Hit the comments below if you have questions.