use setImmediate to callback  #1