I checked with the development team and confirmed that this is the current behavior. Because the refresh or flush was cancelled on the users request and didn’t have an error, it is considered successful.
Actually they understood your use case - and most likely there'll be a review whether it makes sense to change the behavior to treat a cancelled sync as a failure instead.
But anyway, this is the current behavior.