FWIW, get_tree().paused = true/false and, critically, in the Node section, make sure your pause menu is either Paused or Always it can run while paused. I have global.gd autoload with a toggle_pause function (it’s _ready() sets itself to Always).
Another thing to be careful of, make sure you manage tween and timer process mode too. If you use get_tree().create_timer(), since it’s part of the scene tree, it always runs by default vs create_tween() inside of a node, which inherits it’s parent process state so generally behave correctly. At least I think it’s this way, might be the reverse.