It's impossible to use wait-for-expect and legacy fake timers with Jest v27.
If you set legacy timers in jest config https://jestjs.io/docs/configuration#timers-string, which enables legacy timers for all tests, however after you call waitForExpect it changes to modern timers and they will be used for the rest of the test.
I suspect that this is because the following code which now sets modern timers by default.