Although it is not written in the LabVIEW help, the Close Reference node runs in the UI thread, when a VI or a GObject reference is passed. Pretty much like the Open VI Reference node behaves. Seems logical and I can accept that. But to my surprise it also wants the UI thread to be idle, when there's nothing to close (no operation, as for a static reference). I came across this purely by accident when dropped a Close Reference node into one of my vim's and forgot about it. The vim was called from many loops, including hardware talkers, so sometimes the connection was interrupted. Long story short, I found out that the Close Reference node was to blame.
Here's a very synthetic example to illustrate (attached):


Of course, I do know that it's not necessary to close such references as the This VI/This App and friends. But in my opinion the check for a no-op should be of a higher priority than switching to the UI thread first.
Tested this in LV 2025, 2021, 2009 and 6.1 with the same result. It's likely a "by design" behaviour, untouched for decades, but nothing prevents it from being improved.
Partially related:
The Root Loop: Stung?
Problem with Asynchronous Call and Forget.vi and MessageBoxW (user32.dll)