Sorry to wake up this thread, but the issue still exists:
If you have a node that is touched and swallows the touch (onTouchBegan return true), but the in onTouchBegan this node also gets removed, the touch will not be swallowed.
It is not swallowed since in OnExit the event handlers registered-flag is set to false. If the registered-flag is set to false, no touches will be swallowed any longer.
I think it is wrong behaviour that a touch of a no longer existing node is not swallowed, even if you explicitely return true.
bool MyNode::onTouchBegan(Touch *touch, Event *event)