diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6
index dea15afa3..18e9f3969 100644
--- a/app/assets/javascripts/discourse/controllers/composer.js.es6
+++ b/app/assets/javascripts/discourse/controllers/composer.js.es6
@@ -268,19 +268,26 @@ export default Discourse.Controller.extend({
 
     return new Ember.RSVP.Promise(function(resolve, reject) {
       if (composerModel && composerModel.get('replyDirty')) {
+
+        // If we're already open, we don't have to do anything
+        if (composerModel.get('composeState') === Discourse.Composer.OPEN &&
+            composerModel.get('draftKey') === opts.draftKey) {
+          return resolve();
+        }
+
+        // If it's the same draft, just open it up again.
         if (composerModel.get('composeState') === Discourse.Composer.DRAFT &&
             composerModel.get('draftKey') === opts.draftKey &&
             composerModel.action === opts.action) {
 
-            // If it's the same draft, just open it up again.
             composerModel.set('composeState', Discourse.Composer.OPEN);
             return resolve();
-        } else {
-          // If it's a different draft, cancel it and try opening again.
-          return self.cancelComposer().then(function() {
-            return self.open(opts);
-          }).then(resolve, reject);
         }
+
+        // If it's a different draft, cancel it and try opening again.
+        return self.cancelComposer().then(function() {
+          return self.open(opts);
+        }).then(resolve, reject);
       }
 
       // we need a draft sequence for the composer to work