## [Unreleased]
+### Fixed
+
+- Fix race condition between ready and task functions worker message handling at startup.
+- Fix duplicate task function worker usage statistics computation per task function.
+- Update task function worker usage statistics if and only if there's at least two different task functions.
+- Fix race condition at task function worker usage executing task computation leading to negative value.
+
+### Added
+
+- Add back pressure detection on the worker node queue. Event `backPressure` is emitted when all worker node queues are full (worker node queue size >= poolMaxSize^2).
+- Use back pressure detection in worker choice strategies.
+- Add worker choice strategies retries mechanism if no worker is eligible.
+
+## [2.6.28] - 2023-08-16
+
+### Fixed
+
+- Ensure pool workers are properly initialized.
+
+### Added
+
+- HTTP server pool examples: express-cluster, express-hybrid.
+
+### Changed
+
+- Remove now useless branching in worker hot code path.
+
+## [2.6.27] - 2023-08-15
+
+### Fixed
+
+- Add `KillHandler` type definition to exported types.
+
+### Added
+
+- Add `destroy` event to pool API.
+
+## [2.6.26] - 2023-08-15
+
### Added
- Add kill handler to worker options allowing to execute custom code when worker is killed.
-- Add listTaskFunctions() method to pool API.
+- Add `listTaskFunctions()` method to pool API.
- SMTP server pool example: nodemailer.
## [2.6.25] - 2023-08-13
```js
// Before
-const DynamicThreadPool = require("poolifier/lib/dynamic");
+const DynamicThreadPool = require('poolifier/lib/dynamic')
// After
-const { DynamicThreadPool } = require("poolifier/lib/dynamic");
+const { DynamicThreadPool } = require('poolifier/lib/dynamic')
```
But you should always prefer just using
```js
-const { DynamicThreadPool } = require("poolifier");
+const { DynamicThreadPool } = require('poolifier')
```
#### New type definitions for input data and response