Making actor non reentrant

I find the benefit in explicitness... These two apps are seemingly "equivalent":

func foo1(execute: (Int) -> Void) {
    bar1 { execute($0) }
}
func bar1(execute: (Int) -> Void) {
    execute(42)
}
foo1 { print($0) }

and:

func foo2() async -> Int {
    await bar2()
}
func bar2() async -> Int {
    42
}
print(await foo2())

yet the first one uses one thread... and the second one – two.

Interestingly you said that, as for me the situation is quite the opposite – the infrastructure saved me from the obvious low-level data races, but that's that.. I wish we'll have something much better eventually that actually "forces" me to write correct code (making an incorrect code a compilation error or at least a runtime error). We are very far from that with the current async/await/actors state of affairs, I am afraid.