Angular-Validity is a deferred asynchronous validation framework for Angular applications.

Why asynchronous?

Performance: there are often multiple controls on a form that need to be validated. Often each control will have multiple rules. Validating the controls and rules synchronously, one after the other, is inefficient. Angular-Validity validates all controls and all of the control's rules at the same time. That's really fast and really good UX.

Why promises?

Deferment: your custom validation rules can be functions. These functions are automagically wrapped in promises. This gives you the power to make asynchronous calls to external API's within your validators, all without disrupting the UX.