So basically, if you want Snap! to detect something like the size of an object or the position of it, you can just use the "If" statements or "Repeat until" statements. However, if you don't add a "wait () seconds" block, Snap! will not detect it because the variables would take too long to detect the size or position.
Snap actually waits for a value to report before going on. I've had a few instances with the url block, that the website wasn't responding, so the block was just there waiting for a response. This is the same for variables, kinda. It takes much less time than the url block because it's just calling a variable in memory, so your bug isn't real. If it is, then please give an example.