As a generic observation, you can and sometimes do get all sorts of difficulty/inconsistency when asynchronous processing is being used (and it's used a lot these days) and you have something else (probably NVDA, in this case) "playing watchman" for any one of a number of events that could be thrown at it in any order, and sometimes very rapidly. You'll often end up with the last event that occurred in rapid succession being the only one that ends up being presented to the end user, as by the time you'd even try with the others it would get even more insanely confusing. Sometimes what the watcher gets last is not what actually happened last.
The following is offered by means of demonstration of this sort of problem generally, not specific to NVDA. I experienced an issue with asynchronous processing when writing a custom VBA script for a screen reader user so that Outlook would automatically click through on a link contained in specific e-mail messages. The message would come in, the script would be kicked off, but the actual message body text would not yet be available for processing because Outlook was still doing something with it while the script was already running. I had to put a bit of "time burning run the treadmill" type code in the script to make sure that Outlook had finished its bit and handed off access to the message body before I moved on. It took me forever to figure out what was going on, as it made no sense to me that Outlook could hand over a message to a script but had only handed over *part* of a message to a script until it finished whatever it was doing with the other part.
Brian - Windows 10 Pro, 64-Bit, Version 1809, Build 17763
Growth for the sake of growth is the ideology of the cancer cell.
~ Edward Abbey