A promise that a function will at some point have a result.
You can attach callback functions to a Deferred. Once it gets a result these callbacks will be called.
Also allows you to register a callback for an error, with the default behavior of logging the error.
Standard way to handle all sorts of blocking or delayed operations.