We get a reference to a topology_scanner_node_t and use it throughout the function, but in the multi-threaded case the topology may alter or remove that scanner node while we hold the reference.