   # composition event starts. Without the `_inCompositionEvent` flag
   # stopping the re-render, the asynchronous update request will cause us
   # to re-render and blow away our newly started 2nd composition event.
+  #
+  # While we're in a composition event it's important that `_onDOMMutated`
+  # still get fired so the selection gets updated and the latest body
+  # saved for the next render. However, we want to disable any plugins
+  # since they may inadvertently kill the composition editor by mutating
+  # the DOM.
   _onCompositionStart: =>
     @_inCompositionEvent = true
-    @_teardownListeners()
+    @_teardownNonMutationListeners()
 
   _onCompositionEnd: =>
     @_inCompositionEvent = false
-    @_setupListeners()
+    @_setupNonMutationListeners()
 
   _onShowContextMenu: (event) =>
     @refs["toolbarController"]?.forceClose()

      @_runExtensionMethod(extension, method, argsObj)

  _runExtensionMethod: (extension, method, argsObj={}) =>
    return if not extension[method]?
    editingFunction = extension[method].bind(extension)
    @atomicEdit(editingFunction, argsObj)


  componentWillUnmount: =>
    @_mutationObserver.disconnect()
    @_teardownNonMutationListeners()
    @_teardownServices()

  setInnerState: (innerState={}) =>
