cal setimmediate with callback