add setImmediate function