validate(target, propName) { if (target && propName) { let validator = { [propName]: { [this.name]: this.config } }; let result; if (this.name == "async") { validate.async2.options = {cleanAttributes: false}; result = validate.async2(target, this.config, null, propName) } else { result = validate(target, validator); if (result) { let error = cleanResult(result); result = Promise.resolve(new ValidationError(error)); } } return result; } throw new Error('Invalid target or property name.'); }