cancel should just return if already cancelled or finished