simultan
simultan copied to clipboard
bug: wrong length of returned value when iterable is the same size as limit
Hello,
I've encountered an issue with simultan when iterable and limit are the same size. The resolved promise has 1 less item than expected.
Here's a quick repro. You can check it here live if you'd like: https://runkit.com/alrico88/simultan-issue-repro
const {simultan} = require('simultan');
const {sleep, Unit} = require('espera');
const response = await simultan(['1', '2', '3'], async (d) => {
await sleep(1, Unit.seconds);
return d;
}, 3);
The expected response should be ['1', '2', '3'], but instead it returns ["1", "2"].
I think the issue stems from using Promise.race when iterable.length === limit. Wouldn't it be better to directly apply Promise.all in that case?