Using dependencies between operations.

DataSycnrhoniser now doesn't have a chance to inspect the state of operations
once they have finished, and cannot react to errors. Not sure how to change
the design to fix this.