Moreover you can execute your tasks using an API designed to improve the **developer experience**.
Please consult our guidelines to <a href="#choose-your-pool">choose your pool</a>
-- Performance :racehorse: [benchmarks](./benchmarks/README.MD)
+- Performance :racehorse: [benchmarks](./benchmarks/README.md)
- Security :bank: :cop: [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=pioardi_poolifier&metric=security_rating)](https://sonarcloud.io/dashboard?id=pioardi_poolifier) [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=pioardi_poolifier&metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
- Easy to use :couple:
- Easy switch from a pool to another, easy to tune :heavy_check_mark:
- `errorHandler` - A function that will listen for error event on each worker
- `onlineHandler` - A function that will listen for online event on each worker
- `exitHandler` - A function that will listen for exit event on each worker
-- `maxTasks` - This is just to avoid not useful warnings message, is used to set [maxListeners](https://nodejs.org/dist/latest-v12.x/docs/api/events.html#events_emitter_setmaxlisteners_n) on event emitters (workers are event emitters)
### `pool = new DynamicThreadPool/DynamicClusterPool(min, max, filePath, opts)`