From the docs :
A thread in upgrade mode can go into read mode by first calling the EnterReadLock method and then calling the ExitUpgradeableReadLock method. This downgrade pattern is allowed for all lock recursion policies, even NoRecursion .
My understanding is that to record a situation, entering a write lock is the normal way to switch from update mode to recording mode anyway, so it needs to be supported even under the NoRecursion policy (it would seem that it makes little sense to update without an update :)
source share