async icon indicating copy to clipboard operation
async copied to clipboard

async.each/async.eachSeries does not work properly when there is another async.each/eachSeries inside the callback

Open soknifedev opened this issue 1 year ago • 2 comments

What version of async are you using? 3.2.5

Which environment did the issue occur in (Node/browser/Babel/Typescript version) NodeJS(v18.15.0)+TypeScript(v5.2.2)

What did you do? Please include a minimal reproducible case illustrating issue.

await async.eachSeries(['a', 'b'], async (item) => {
  await async.eachSeries(['c', 'd'], async (secondItem) => {
      console.log('secondItem:', secondItem)
  })
})
console.log('completed');

What did you expect to happen? Iterate over a, b, inside that iteration iterate over c, d.

What was the actual result? Iteration for c, d happens for "a" but not for "b", and the "completed" log never occurrs. (It gets stucked).

This happens too with async.each.

It works when using for await.

soknifedev avatar Feb 20 '24 12:02 soknifedev

I'm seeing this same behavior.

nathaniel-holder avatar Mar 04 '24 20:03 nathaniel-holder

I can also confirm that this happens when using await async.filter() inside an async function.

soknifedev avatar Aug 05 '24 18:08 soknifedev

I cannot reproduce this. Make sure your typescript/babel/esbuild/etc. compiler is targeting ES2017 or later and preserving async functions.

❯ node async.js
item: a
secondItem: c
secondItem: d
item: b
secondItem: c
secondItem: d
completed

aearly avatar Sep 02 '24 20:09 aearly