fixed setTimeout (which is in reality called on Date.now() after the callstack is empty by continously comparing the tasks time with date.now())