'Return the current success result of C{deferred} or raise
C{self.failureException}.
@param deferred: A L{Deferred<twisted.internet.defer.Deferred>} which
has a success result.  This means
L{Deferred.callback<twisted.internet.defer.Deferred.callback>} or
L{Deferred.errback<twisted.internet.defer.Deferred.errback>} has
been called on it and it has reached the end of its callback chain
and the last callback or errback returned a non-L{failure.Failure}.
@type deferred: L{Deferred<twisted.internet.defer.Deferred>}
@raise SynchronousTestCase.failureException: If the
L{Deferred<twisted.internet.defer.Deferred>} has no result or has a
failure result.
@return: The result of C{deferred}.'

def successResultOf(self, deferred):

    result = []
    deferred.addBoth(result.append)
    if (not result):
        self.fail(('Success    result    expected    on    %r,    found    no    result    instead' % (deferred,)))
    elif isinstance(result[0], failure.Failure):
        self.fail(('Success    result    expected    on    %r,    found    failure    result    instead:\n%s' % (deferred, result[0].getTraceback())))
    else:
        return result[0]
