diff --git a/spec/javascripts/helpers/vuex_action_helper.js b/spec/javascripts/helpers/vuex_action_helper.js
index 4ca7015184ee226bb05f14ac83f412b2908e5f43..dd9174194a150f97b964cbc9c58ac625cfa15b68 100644
--- a/spec/javascripts/helpers/vuex_action_helper.js
+++ b/spec/javascripts/helpers/vuex_action_helper.js
@@ -84,14 +84,12 @@ export default (
     done();
   };
 
-  return new Promise((resolve, reject) => {
-    try {
-      const result = action({ commit, state, dispatch, rootState: state }, payload);
-      resolve(result);
-    } catch (e) {
-      reject(e);
-    }
+  const result = action({ commit, state, dispatch, rootState: state }, payload);
+
+  return new Promise(resolve => {
+    setImmediate(resolve);
   })
+    .then(() => result)
     .catch(error => {
       validateResults();
       throw error;
diff --git a/spec/javascripts/helpers/vuex_action_helper_spec.js b/spec/javascripts/helpers/vuex_action_helper_spec.js
index 8d6ad6750c09bd1e2e7f25e2da181a83099b39aa..09f0bd395c3548ddf8b85ec9e8049e3af04f0e9d 100644
--- a/spec/javascripts/helpers/vuex_action_helper_spec.js
+++ b/spec/javascripts/helpers/vuex_action_helper_spec.js
@@ -138,4 +138,29 @@ describe('VueX test helper (testAction)', () => {
         });
     });
   });
+
+  it('should work with async actions not returning promises', done => {
+    const data = { FOO: 'BAR' };
+
+    const promiseAction = ({ commit, dispatch }) => {
+      dispatch('ACTION');
+
+      axios
+        .get(TEST_HOST)
+        .then(() => {
+          commit('SUCCESS');
+          return data;
+        })
+        .catch(error => {
+          commit('ERROR');
+          throw error;
+        });
+    };
+
+    mock.onGet(TEST_HOST).replyOnce(200, 42);
+
+    assertion = { mutations: [{ type: 'SUCCESS' }], actions: [{ type: 'ACTION' }] };
+
+    testAction(promiseAction, null, {}, assertion.mutations, assertion.actions, done);
+  });
 });