separate OnUpdate and OnError channels, OnUpdate now gets a list of diffs