the counter is what actually matters here, allow only fires once per fetch and sits outside the retry loop so a connect failure still burns a token even though the origin never saw the request, and a headerless 429 retried three times ends up as four real hits against one tick. persist spent as your ceiling after that and the volume cap just turns into a lasting 403. spent also skips the prune that allow does so after any idle time you read a stale number and write it straight to disk. lumping 401, 403, 407 and 451 into one hard block is off too since only 403 is a real volume flip, so a missing proxy cred or a geo block gets saved like you hit the quota. also blockederror gets raised in fetch but I cant find where its defined, and a 200 challenge page just walks through classify as ok
the counter is what actually matters here, allow only fires once per fetch and sits outside the retry loop so a connect failure still burns a token even though the origin never saw the request, and a headerless 429 retried three times ends up as four real hits against one tick. persist spent as your ceiling after that and the volume cap just turns into a lasting 403. spent also skips the prune that allow does so after any idle time you read a stale number and write it straight to disk. lumping 401, 403, 407 and 451 into one hard block is off too since only 403 is a real volume flip, so a missing proxy cred or a geo block gets saved like you hit the quota. also blockederror gets raised in fetch but I cant find where its defined, and a 200 challenge page just walks through classify as ok