I agree issue 1 does not stand. If we change struct S1 into class S1, there will be diagnostics.
For sturcts, because they are copied when being transferred across domains, there cannot be concurrent accesses to the same object later. Both test1 and test2 captured that object by reference, so it's a different story.
FYI, I think test1() is related to a long-standing bug that just got fixed recently. And test2() uses a new syntax which I cannot find in any official documentation, so I'm not sure where this one will go.