changed returnAsync to map all values
add nextTick/setImmediate support