Close() already cancels all the watchers but doesn't bother to clear out the bookkeeping maps so Cancel() may try to cancel twice. Fixes #5533