Would love to see @eskimo insights on the matter.
Meanwhile, considering your specific refined question I wonder what pitfalls do you see in the proposed solution that shows how to avoid having the variable thread safe. Or is your question more open-ended, just the example could have been better?

It seemed like a good idea, but the ThreadsafeVar is actually "unbalanced", in that the "getter" is synchronous but the "setter" is asynchronous - whereas an Actor is async in both directions.
Yes, that's the case. Plus, "thread safe var" can be also made "balanced" by having its setter synchronous as well (either with using a semaphore or a mutex, or (in some cases) with dispatch sync).