1. When the result is ready, give it
to the Deferred object (.callback(..)
or .errback(..))
2. Deferred object triggers (call/err)back with
the result or the Failure::
* if a callback raises exception, switch
to errback
* if an errback *doesn't* raise exception
or return a Failure, switch to callback
* result of callback is passed to next
callback, thus creating a chain of
processors
* an unhandled Failure gets passed down
the line of errbacks, thus creating
an analog to a series of 'except ...:'
blocks. Instead of except blocks, we
have errback methods.