You can use algorithm implementations that do not have secret-dependent timing differences in any language, as long as you are clear that your guarantees do not extend to the underlying runtime or to compiler optimizations. This isn't perfect, but it's better.
You can go further Rust-to-WASM and use tools like https://github.com/trailofbits/skills/tree/main/plugins/cons... to check the assembly and the runtime that the assembly runs in. (Most of the linked Claude skill is a Python program. It just relies on AI to eliminate false positives.)
The real question is: What's your threat model?
Wasm doesn't promise it either but there's a much better chance you get what you want there.
Tell me you didn't read past the headline without telling me you didn't read past the headline.
The only things that can easily go wrong now are:
The compiler turns out to be evil and introduces an “optimization” that I don’t anticipate
The V8 developers turn out to be evil and modify how this logic works and break my assumptions in a future release
(Not to detract from anyone's cleverness or hard work.)