Part of twisted.internet.defer.Deferred View Source
Each callback will have its result passed as the first argument to the
next; this way, the callbacks act as a 'processing chain'. Also, if the
error-callback returns a non-Failure or doesn't raise an
processing will continue on the *success*-callback chain.
If the argument that's passed to me is not a
instance, it will be embedded in one. If no argument is passed, a
instance will be created based on the current traceback stack.
Passing a string as `fail' is deprecated, and will be punished with a warning message.