I kind of wonder if we don't want to add the touchmove/touchend listener iif the touchstart has started on the element. That will avoid some strange things if I start to touch from the edge and move quickly to dispatch some touchmove on the top.

That will also avoid your need to check for this._touchStart