Job scheduler and rate limiter, supports Clustering
light
bundle, it would broadcast a lot of annoying but harmless exceptions on the error listener. Thank you @richtera for the excellent bug report https://github.com/SGrondin/bottleneck/issues/127
The "failed"
event listener typings did not allow returning undefined
/null
or Promise<undefined>
/Promise<null>
.
Thank you @dobesv for your contribution!
received
, queued
, scheduled
, executing
and done
.They map to Jobs Lifecycle transitions. These events are local to a limiter inside a Cluster, for performance reasons.
Thank you @lp-wodell for the feature suggestion! #124
This massive gain is thanks to a refactor of the engine internals. The behavior of this module should be unchanged. If Bottleneck 2.18.1 behaves differently from 2.18.0 in your application, please open an issue.
catch
would not trigger the Node.js "Unhandled Promise Rejection" warning.This has been fixed and Node now correctly alerts you, as this points to a bug in your application. async/await users: wrap your jobs into a try/catch at the place where the job is await
'ed. Promise users: make sure your jobs have a .catch()
.
Added Increase Intervals. Similar to the Refresh Interval, it increases a limiter's reservoir
on an interval. Instead of resetting the reservoir to a specific value, it increments the reservoir by a certain value, up to an optional maximum value.
Thanks @TheGame2500 and @tomblanchard for suggesting this feature.
Optimized Clustering code for use cases where short lived clients are created at a high rate.
schedule()
and wrap()
will return a promise, even if it failed with a synchronous exception. It is poor practice in JS to mix synchronous and asynchronous failures in the same flow. Few users will be affected by this change, and those who are affected will now benefit from more reliable code as a result.Thank you @elliot-nelson for this feature https://github.com/SGrondin/bottleneck/pull/116