Here is how I would solve the problem. I'm checking on every mouse exit event if the mouse is still inside the global rectangle of the control node. This will however fail if the Button is directly on the edge of the control nodes rectangle.
Un- checking the "Stop mouse" parameter of the children did not work as far as I can tell.
"replaced global_mouse_pos with get_tree().get_root().get_mouse_pos()"
var mouse_inside = false
if( get_global_rect().has_point( get_tree().get_root().get_mouse_pos() )):
print("mouse over button")
mouse_inside = false
mouse_inside = true