Correct me if I'm wrong, but with the current semantics, a simple flag is enough, as long as we do not instantiate more than one fetcher. Right now I'm setting the flag before deferring to the thread pool, and it is that inside that thread  that it will be unset.
All the same, changing to a class-level lock, since it cannot hurt in case of future misuse.