99% of languages don't have race condition prevention and yet they're doing fine. Go has a pretty good race condition detector.
Same thing applies to the STM "subset" of Haskell -- conformance to which is statically verified by the type checker[1].
[1] There's no particular magic going on wrt. checking -- STM is a monad. It just happens to have "magic" runtime support.