Yes, the problem is a circular relationship between rotation, globe and the drag event handler. Here is a visualization of your notebook’s computation graph:
I’ve colored the mutable assignments in blue; since references to mutables are not reactive, the assignments flow in the opposite direction.
So when you drag, you’ve mutating the value of rotation, which then causes the globe cell to be re-initialized, re-creating your drag event listeners (dragged, etc.) and behavior (rotator). Unfortunately the drag behavior is stateful, so if you throw away the drag behavior and create a new one in the middle of dragging bad things happen.
What you want here is to prevent your drag behavior from being re-initialized during dragging. You probably also want to prevent your canvas (demo) from being re-initialized during dragging; redrawing the existing canvas will be faster, and if I recall correctly, it’s necessary for touch events to preserve the element that received the touchstart.
I’ll cook up a notebook that shows how to wire the graph differently to achieve these goals.