When you start pinching/unpinching fingers apart, the zoom happens in sync with your finger spacing. As soon as you start pinching, the application seems to receive with the event stream all the x and y coordinates so that pan and zoom can be done simultaneously in lockstep with the finger positions and spacing on the touch pad.
Similarly when you pull 2 or 3 fingers from the side to e.g. go back a page, the reveal animation starts, or an arrow appears, and you can change your mind mid gesture by reversing the finger movement and the animation feedback is helpful enough to tell you that indeed the gesture will be canceled.
I honestly hope that the developers interested in improving this in libinput and stack have the same understanding that gestures are not about recognizing the one-off side/pinch movement with a couple of fingers, but about low latency fluid interaction of fingers with visual animation feedback tightly coupled. The other (one-off) type of gestures where you swipe your three fingers to the left and then after a sampling interval the framework or stack receives a ThreeFingersLeft swipe event (with length or time or xy values) is IMO a very underwhelming experience.