I’ve added an issue regarding this. The way to solve your issue is by adding the listener to connection.added.postExecute, because during execute or revert there shouldn’t be any modeling actions being performed or the execution chain will break. During these phases only atomic actions should be performed. What happens here is that during revert the connection.added is being fired and therefore it’s trying to add SequenceFlow_2 twice.
You cannot invoke other modeling operations in the atomic execute and revert phases. You can hook into the respective preExecute or postExecute phases though in order to do your magic.
We are going to improve this by throwing an error indicating that (via bpmn-io/bpmn-js#143).