Ok, I have a really dirty hack fix, but I don't know the full implications of it, just that it fixes my specific issue...
if (touchType && type !== touchType) { //some browsers actually support both, so must we.
element.addEventListener(type, func, capture);
}
Comment that out and all behaves as expected, at least in iOS 12/13, and Chrome on a mac.
Debugging a little bit more, it seems to be adding a second "pointerdown" via that statement which is making things unhappy.