from twisted.internet import defer, reactor def startWithMe(ignore): messages = ["hello", "everyone", "end"] def andMe(ignore): if messages: print "M:", messages.pop() d = defer.Deferred() d.addCallback(andMe) reactor.callLater(0.5, d.callback, 1) return d d1 = defer.Deferred() reactor.callLater(0.5, d1.callback, 1) return defer.DeferredList([andMe(None), d1], fireOnOneErrback=True) def endWithMe(ignore): print ignore, ";This is the end." d = defer.Deferred() d.addCallback(startWithMe) d.addCallback(endWithMe) d.callback(1) reactor.run()