handle 0 tasks in ForEachAsync