Weird, it should work. You can use a FormValidationAction to return an empty list in the required_slot() method if the intent is ‘cancel’`:
def required_slots(self, dom_slots, dispatcher, tracker, domain):
if tracker.latest_message['intent'] == 'cancel':
return []
else:
return dom_slots # Or whatever your original required_slot() did
See this for more and alternatives: How can i have a rule to cancel a form?