Python torcido: como agendar?

Tendo 1 dia de experiência no Twisted, tento agendar o envio de mensagens em resposta ao cliente tcp:

import os, sys, time
from twisted.internet import protocol, reactor

self.scenario = [(1, "Message after 1 sec!"), (4, "This after 4 secs"), (2, "End final after 2 secs")]
for timeout, data in self.scenario:
        reactor.callLater(timeout, self.sendata, data)
        print "waited %d time, sent %s\n"%(timeout, data)

Agora ele envia mensagens, mas tenho 2 problemas:
1) "timeout" está saindo de "now" e quero contá-lo após a conclusão de cada tarefa anterior (a mensagem anterior foi enviada)
2) Não sei como fechar a conexão depois que todas as mensagens foram enviadas. Se eu colocarself.transport.loseConnection() depois decallLaters fecha a conexão imediatamente.

Na tentativa anterior, não useireactor.callLater, se apenasself.transport.write() etime.sleep(n) nofor ciclo. Nesse caso, todas as mensagens foram enviadas juntas após o tempo limite esgotado ... Não era algo que eu queria.
O objetivo é aguardar a conexão do cliente, aguardar o tempo limite1 e enviar a mensagem1, aguardar o tempo limite2 e enviar a mensagem2, ... etc. Após a mensagem final - fechar a conexão.

questionAnswers(2)

yourAnswerToTheQuestion