You’re missing the case, where another task starts up in between the calls to Registry.lookup and DynamicSupervisor.start_child. It won’t be there when you ask the registry if it exists, but it will be there when you try to start another instance with the same name.