The match statement could go anywhere really because it's made specific by the inner if.
Refresh header *should* work immediately. If it doesn't then it's a bug.
A system action is overridden if one or more unmasked actions occur. A match itself is not an action, nor is an if statement, because they don't actually do anything, they are only control of flow statements.