optimize for setTimeout(fn, 0)