When async is false, the work is done in the main thread so it is going to block user input. We’re going to do some optimizations here in the next several months, but it might get 30-60% faster, not something like 10x faster.
When async is true (default), you are probably coming across a bug in Cesium. Can you reproduce it in Chrome and Firefox? Can you submit an issue with a minimal code example to reproduce it?
You probably want to use asynchronous but check if Primitive.ready is true before calling getGeometryInstanceAttributes. When loading geometry asynchronously, the instance attributes aren’t available until Primitive.ready is true. The widget.scene.preRender event would be the best place to add that check and your code using it.
Nah, it sounds like a developer error. Long-term, we may even be able to batch these up so users don’t have to check for ready, but I can’t justify it right now.