ActorPool always kills delegates with PoisonPill. This means you can't use backoff if delegates perform asynchronous work, because a delegate might get killed even if it's still planning to send out a reply later.
If delegates potentially defer sending replies until a later time, what you'd want to do is remove the delegate from the pool (so it doesn't get any new tasks) and maybe have the delegate stop itself when it's done with whatever it was doing. Perhaps send the delegate a DieWhenDone message.
Two potential solutions I thought of so far:
- virtualize the "send PoisonPill" step in DefaultActorPool so a subclass can override it
- a general feature of Actor allowing an actor to ignore PoisonPill, so a delegate could take the PoisonPill as a suggestion to stop itself later, rather than having Akka stop it immediately