4be6852b94
webfetch.Fetcher.last held one entry per distinct host the crawler ever dialed, never pruned. Bounded in practice by how many hosts get crawled, but crawl.on_demand is true in deploy, so the host set is whatever he names out loud. An entry older than HostInterval cannot delay a request — waitTurn would let the next one straight through — so it is dropped. The sweep runs on write and only once the map passes 64 entries, below which walking it costs more than the entries do. Rate limiting is unchanged: a host dialed inside the interval is kept, which the test asserts, because pruning one would hand out a free turn.