>> link: function ($scope, element, attrs, ngModel) { >> // if (element[0] && element[0].$touched) { >> ngModel.$asyncValidators.smCodeUnique = function (modelValue, viewValue) { >> >> if (!viewValue || _.isEmpty(modelValue.trim())) { >> return services.Q.when(true); >> } >> >> var deferred = services.Deferred; >> $log.info("Firing server-side validations for " + $scope.tableName + '.' + $scope.columnToTest); >> let codeObject = { >> id: $scope.primaryKey, tableName: $scope.tableName, >> columnToTest: $scope.columnToTest, code: viewValue >> }; >> return services.Http.put('api/items/checkCodeUniqueness', codeObject).then( >> function (response) { >> if (!response.data.isValid) { >> $scope.errorMessage = response.data.errorMessage; >> deferred.reject(response.data.errorMessage); >> } >> else { >> deferred.resolve(response.data); >> } >> return deferred.promise; >> } >> ); >> }; >> // } >> }>Looks OK. but 'return deferred.promise' might be redundant ?