'L{task.react} runs the reactor until the L{defer.Deferred} returned by
the function it is passed is errbacked, then it stops the reactor and
reports the error.'

def test_runsUntilAsyncErrback(self):

    class ExpectedException(Exception, ):
        pass
    def main(reactor):
        finished = defer.Deferred()
        reactor.callLater(1, finished.errback, ExpectedException())
        return finished
    r = _FakeReactor()
    exitError = self.assertRaises(SystemExit, task.react, main, _reactor=r)
    self.assertEqual(1, exitError.code)
    errors = self.flushLoggedErrors(ExpectedException)
    self.assertEqual(len(errors), 1)
