use setImmediate for enqueue where avaliable