These are the basic guidelines for creating and removing edges:
use make_edge and remove_edge
Avoid using register_successor and register_predecessor
Avoid using remove_successor and remove_predecessor
As a convention, to communicate the topology, use only functions flow::make_edge and flow::remove_edge. The runtime library uses node functions, such as sender<T>::register_successor, to create these edges, but those functions should not be called directly. The runtime library calls these node functions directly to implement optimizations on the topology at runtime.