How does blockDuration work?
Thank you for this amazing library as well as your time. 

[The docs](https://github.com/animir/node-rate-limiter-flexible/wiki/Options#blockduration) are a little vague on the inner workings of `blockDuration`, so I have a few questions:

1) What happens if `blockDuration` is set to (the default value of) `0`? Does it simply throw the relevant error (once all  points are consumed) until `duration` resets? Or does it work the same way as `duration` and `rateLimiter.block(key, secDuration)` in where the block duration will never expire?

   - If the former: is there a way to set `blockDuration` to "never expire" when defining the limiter? Or is the only way to use `rateLimiter.block(key, secDuration)` with `secDuration` set to 0?

   - If the latter:  Inversely to the above, is there a way to set it to "only throw errors until `duration` resets" other than just setting `duration` and `blockDuration` as the same number?

2) Whichever method accomplishes blocks to "never expire", on `RateLimiterMemory`, will this have the same limitation as `duration` [where the max duration is about 24 days](https://github.com/animir/node-rate-limiter-flexible/wiki/Memory#ratelimitermemory)?

3) When using `blockDuration` in conjunction with the `rateLimiter.block(key, secDuration)` function, what takes priority? Is this true even if `secDuration` is set to `0` (or undefined)?

4) If `blockDuration` is set lower than `duration` and someone exceeds their points, do their consumed points reset to 0 after `blockDuration` expires? Or (assuming they're in the same `duration` period) are they still at max points and would immediately trigger the block again?