Here was discussion with great examples on how to implement everything using structured concurrency: Structured caching in an actor
The open question (as for me) is cancellation - it seems to be is a bit hard to properly implement, the rest seems to be OK, but I agree that restricting some serial access here would be much beneficial.