use fake timers rather than delay