title: Custom value on model when AngularJS $asyncValidator's promise rejects
body: <p>I'm running a custom async validator on an input field through a directive:</p>
  
  <pre><code>angular.module("app", [])
  .directive("accountDescriptionValidator", function ($q, $timeout) {
      function startValidation() {
        var startValidationDeferred = $q.defer();
        $timeout(function() { startValidationDeferred.resolve() }, 100);
        return startValidationDeferred.promise;
      }
      return {
          restrict: "A",
          require: "ngModel",
          scope: {
              parentModel: "="
          },
          link: function (scope, elm, attrs, ctrl) {
              ctrl.$asyncValidators["accountDescriptionValidator"] = function (modelValue, viewValue) {
                  var accountDescriptionValidatorDefer = $q.defer();
                  startValidation().then(function(accounts) {
                      if (viewValue == "aaa") {
                        accountDescriptionValidatorDefer.reject();
                      }
                      else {
                        accountDescriptionValidatorDefer.resolve();
                      }
                  });
                  return accountDescriptionValidatorDefer.promise;
              };
          }
      };
  })
  </code></pre>
  
  <p>The validator does its job greatly; however when the validation (rightfully) fails, the model bound to the input field is deleted from its parent object altogether. Instead, what I'd like is to keep the latest valid value in it. Is this possible?</p>
  
  <p>EDIT: plnkr added <a href="https://plnkr.co/edit/EE7L04kno3LvkceX4vCK?p=preview" rel="nofollow">here</a></p>
  
  <p>EDIT2: now the question code matches the plnkr one</p>