Turns out this simply needs vi.runAllTimersAsync() instead. Then it works.
vi.runAllTimersAsync()
Of course stubbing setTimeout() is also an option.
setTimeout()