How to call an async function from a non-async function?

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?

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).