diff --git a/src/dispatcher.js b/src/dispatcher.js
index 67d2944cf8e5f6f01bd0a43aa7feb1e7c7c8c2ce..4b856bf310afbde5f547bb850ec9466987f3fbb2 100644
--- a/src/dispatcher.js
+++ b/src/dispatcher.js
@@ -20,13 +20,11 @@ var flux = require("flux");
 
 class MatrixDispatcher extends flux.Dispatcher {
     dispatch(payload) {
-        if (this.dispatching) {
-            setTimeout(super.dispatch.bind(this, payload), 0);
-        } else {
-            this.dispatching = true;
-            super.dispatch(payload);
-            this.dispatching = false;
-        }
+        // We always set a timeout to do this: The flux dispatcher complains
+        // if you dispatch from within a dispatch, so rather than action
+        // handlers having to worry about not calling anything that might
+        // then dispatch, we just do dispatches asynchronously.
+        setTimeout(super.dispatch.bind(this, payload), 0);
     }
 };