'If a first L{Deferred} without a result is returned from a callback on
a second L{Deferred}, the result of the second L{Deferred} becomes the
result of the first L{Deferred} as soon as the first L{Deferred} has
one and the result of the first L{Deferred} becomes L{None}.'

def test_asynchronousImplicitChain(self):

    first = defer.Deferred()
    second = defer.Deferred()
    second.addCallback((lambda ign: first))
    second.callback(None)
    firstResult = []
    first.addCallback(firstResult.append)
    secondResult = []
    second.addCallback(secondResult.append)
    self.assertEqual(firstResult, [])
    self.assertEqual(secondResult, [])
    result = object()
    first.callback(result)
    self.assertEqual(firstResult, [None])
    self.assertEqual(secondResult, [result])
