Using struct was a premature optimization and, begin the class mostly used via impure method it creates problems when instances of it are declared as readonly fields, which was what created the bug in the first place.
I could have made all the instances of the struct non-readonly, but that would have only been a short-term solution and prone to future errors, as the impure method worked perfectly for test loads, only failing for longer responses.