denoland / denoland/std

pooledMap's error message is unhelpful when an error comes from the input async iterable

Open
#6,716 1 comment 1 reaction 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
3.6k
Forks
681
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**

pooledMap's error message is unhelpful when an error comes from the input async iterable. It gives the following message:

```
Uncaught AggregateError: Cannot complete the mapping as an error was thrown from an item
at https://jsr.io/@std/async/1.0.13/pool.ts:95:9
```

But the error is not from a transforming promise

**Steps to Reproduce**

Run the following code

```
// Async iterator that throws on first iteration
async function* errorThrowingIterator() {
throw new Error("Iterator failed on first step!");
yield 1; // This will never be reached
yield 2;
yield 3;
}

// Usage with pooledMap that will trigger the error
import { pooledMap } from "jsr:@std/async/pool";

const results = pooledMap(
2,
errorThrowingIterator(),
async (item) => {
console.log("Processing:", item); // This won't execute
return item * 2;
}
);
```

We will get

```
Uncaught AggregateError: Cannot complete the mapping as an error was thrown from an item
at https://jsr.io/@std/async/1.0.13/pool.ts:95:9
```

**Expected behavior**

If the error is not from settled promises, I think we should throw the error from the catch block instead.

**Environment**

- OS: macOS 15
- deno version: 2.3.5
- std version: 1.0.13

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.