Invoke iterate() via async.setImmediate() so it is safe to return callback(); directly from iterator

...ack if the iterator function sometimes invokes the callback directly with 'return callback();'