Data race: Discoverer.registryLock must cover the contents of registry as well
Data race: can't access sharedPullerState.closed from the outside