I think this could actually happen with the following race condition:

1. there is only space for a single counter (we're at MAX_COUNTERS - 1)
2. client A calls `allowed` which runs until line 62, just before `_ensureCounters()` is called
3. client B calls `allowed` to completion which adds the last counter
4. client A finishes running `allowed` which adds another counter in line 63.
5. client B craps out on line 33 of `increment`
6. client A craps out too

I'm not sure how to fix this. The problem is that we don't have an atomic "check and increment" operation.

On the other hand, exceeding the counter capacity by a bit, is not a big deal since we should have plenty of space for a large map anyways, so maybe the check could be removed as long as the case where the map is over capacity is supported?