I think calling ReadUUID with a timeout of 1ms is a bit expensive. It will return as soon as it finds a tag anyway. 100ms might be better.
I think we can also get the reader into a state where it always returns an error immediately until a new tag comes along, causing a tight loop. Needs investigation and maybe a short delay after falling into that error case.