IAsyncConstraint
Interface for constraints which support asynchrnious ApplyAsync.
            
                
Applies the constraint to a delegate that returns the task.
            The default implementation simply evaluates the delegate and awaits the task
            but derived classes may override it to provide for delayed processing.