Had a chat with @decentralion about the API for the unified reference detection and how this should interact with the loading code.
We’ve concluded that the reference detectors should have a dependency on the mirrored data. And the loading code should separate the mirror updating stage from the graph creation stage.
The reference detector would be created as a result from updating the mirror. And a continuation would be provided, which can accept a combination of all reference detectors.
oldLoad :: () => Promise<Graph>
newLoad :: () => Promise<[
ReferenceDetector,
(ReferenceDetector) => Promise<Graph>
]>