If we don't mind depending on Twisted 12.3+ we can use http://twistedmatrix.com/documents/current/api/twisted.internet.task.html#react here instead.