use setImmediate consistently when we might not be truly async
0.5.102