This returns a newly-created RequestM, outside of the usual Requester pathways.
This returns a newly-created RequestM, outside of the usual Requester pathways. This is slightly dangerous, but useful -- think of it as the counterpart to creating a Promise and returning its .future. The difference here is that we're using the same object for both sides -- you can pass the returned RequestM around, map over it, and so on, and resolve it at the appropriate time.
If you use prep/resolve, it is your responsibility to call resolve only at a safe time, inside the Actor's receive loop. (Or inside persist() in a PersistentActor, or some such.) Do this only when necessary; normally, you should work through .request().