Validate must always be a callback, the returned result can be a boolean, function or object (must be a promise)