deno_std
deno_std copied to clipboard
pooledMap's error message is unhelpful when an error comes from the input async iterable
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
If the error is not from settled promises, I think we should throw the error from the catch block instead.
I think we should aggregate both errors and set them to AggregateError