I managed to finally find this solution after a while
I was doing something like this:
<div class="pin_button" tappable (tap)="pin_9()" (press)="pin_9()">9</div>
Obviously with 10 of these for each number on the PIN entry
The problem was that when you tapped your PIN super fast, things were locking up and numbers were being missed.
Incredibly frustrating and I was shouting at Ionic severely.
The solution is super simple
You use (touchstart) rather than (tap) or (press).
If you do a performance recording on chrome you will see the consecutive events involved when a user taps on a screen.
I saw that pointerdown (https://www.w3.org/TR/pointerevents/#the-pointerdown-event) was severely lagging in Chrome.
(touchstart) is the best way to immediately execute anything you want based on presses.
I am going to see what difference it makes to my app to replace taps and presses throughout with (touchstart)