You're welcome! 
@MPLewis: Yup, now that you mention it I remember having done something similar. My tokens in fact had a much longer life-time, but I used a similar approach anyway.
As an aside, allow me to provide some commentary regarding this statement. I can understand that this might be the impression (especially, but not exclusively, for beginners), but I think that's a dangerous way to think/design things. The major difference between reference and value types (esp. when considering "what could bite me in the butt the hardest?") is probably shareability.
Reference types can be shared among different places in your code and this is not only a problem when writing asynchronous stuff. While it can be a useful feature (some things you want to share), the cost is that you increase the scope of thinking, i.e. the cognitive effort you have to invest when (re-)understanding your code (or someone else's).
Swift has a strong emphasis on code that you can reason about locally. If you read a function that gets a value-type parameter passed you typically do not have to think about where that came from (and whether it might be mutated while you are using it further down the line). Equivalently, if you pass it to yet another function you don't care what it does with this, your local copy stays unchanged.
So if mutability was only achieved by using reference types, you would lose ability to locally reason about code every time you "give" your instance to some other piece of code. All just because it was convenient to quickly mutate a single property of your type.
Lastly, I remembered yet another example that also combined mutability of a struct's property with access modifiers: private(set) is a thing. 
I had a struct that, among other things, could also be instantiated from a specific json payload (i.e. it was Codable, but in a specific case decoding wasn't just straight forward). This specific decoding involved having a list of items typed to this struct, but during decoding I had to modify each item.
So instead of writing a different decoding function I just added changed the one affected attribute with to be private(set) var and then added a simple function to decode this specific json payload. In this function, I decoded the list of items "in the regular way" (a one-liner), and then iterated over all the items and mutated their settable attribute (all in the same file/type definition, of course). Outside from this file, the struct seemed to have only immutable properties and looked "like before", but doing this was way easier than to manually define keys, do decoding by hand for this specific payload.