When Player B calls SetOwner on an object owned by PlayerA, both Player A and B temporarily have ownership, and then Player B loses ownership.
As for the synced value, there is no problem because the values will eventually be synced, but it means that there will be a section where routines that work based on the IsOwner result will run on both Player A and B.
This can be confusing and complicate matters for those who design based on the assumption that ownership holders are unique.
Therefore, I would like to see you provide a SetOwner that works asynchronously as before (e.g. SetOwnerAsync)