For example:
There is a maximum, minimum, initial and current limit. There is a callback that accepts an error that occurred during the call (for example, an error related to parallelism or another error) and returns a boolean (whether to reduce the limit or not).
This seems like the kind of thing that is hard to get right, and hard to generalize for a low-level library such as Async. I'd encourage you to experiment with this in your own project.
I think it would be nice to add adaptive parallelism to existing functions or create new ones.
For example: There is a maximum, minimum, initial and current limit. There is a callback that accepts an error that occurred during the call (for example, an error related to parallelism or another error) and returns a boolean (whether to reduce the limit or not).