About PROMISE : ---
## Also known as
A Promise represents a proxy for a value not necessarily known when the promise is created. It
allows you to associate dependent promises to an asynchronous action's eventual success value or
failure reason. Promises are a way to write async code that still appears as though it is executing
in a synchronous way.
![alt text](./etc/promise.png "Promise")
Promise pattern is applicable in concurrent programming when some work needs to be done asynchronously
* code maintainability and readability suffers due to callback hell.
* you need to compose promises and need better error handling for asynchronous tasks.
* you want to use functional style of programming.
## Real world examples
* [Guava ListenableFuture](https://github.com/google/guava/wiki/ListenableFutureExplained)
## Related Patterns
* Async Method Invocation
* [You are missing the point to Promises](https://gist.github.com/domenic/3889970)
* [Functional style callbacks using CompletableFuture](https://www.infoq.com/articles/Functional-Style-Callbacks-Using-CompletableFuture)