Hey Dinfael,
After reading over your question, this does not appear to be a bug. There will occasionally be times when you are attempting to access a property from something that has not been initialized yet, which can lead to it returning a null value. Placing the delay is the proper way to get around that behavior, which occurs mainly because there is no set order that events will run during runtime. Just to clarify, whenever you run into this issue, placing a short delay as you have done is the correct thing to do, and should prevent you from running into any further issues.
Have a great day!