Como dividir e despachar um fluxo de controle assíncrono usando Continuações?

Eu tenho um fluxo de controle assíncrono como o seguinte:

ActorA ! DoA(dataA, callback1, callbackOnErrorA)

def callback1() = {
  ...
  ActorB ! DoB(dataB, callback2, callbackOnErrorB)
}

def callback2() = {
  ActorC ! DoC(dataC, callback3, callbackOnErrorC)
} 

...

Como eu dividiria esse fluxo em várias partes (continuações) e as enviaria sequencialmente para diferentes atores (ou threads / tarefas), mantendo o estado geral?

Qualquer dica apreciada, obrigado

questionAnswers(3)

yourAnswerToTheQuestion