// In helper callServerAction : function(component, action) { return new Promise(function(resolve, reject) { action.setCallback(this, function(response) { let _state = response.getState(); if (_state === "SUCCESS") { resolve(response.getReturnValue()); } else { let errors = response.getError(); let message = "Error"; if (errors && Array.isArray(errors) && errors.length > 0) { message = JSON.stringify(errors); } reject(new Error(message)); } }); $A.enqueueAction(action); }); }, // In Controller doMethod : function(component, event, helper) { let myAction = component.get("c.doSomething"); myAction.setParams({ "param1": param1 }); let myAcitonPromise = helper.callServerAction(component, myAction); myAcitonPromise.then(function(_returnValue) { // DO SOMETHINT OR CONTINUE PROMISE }).catch(function(_error) { console.error(_error); }).finally(function() { }); }