Depends on D80198.
This patch implies ASTs might be built with stale preambles without blocking for a fresh one. It also drops any guarantees on every preamble version being built. In case of multiple preamble build requests, in addition to being debounced. Any preamble requested with a WantDiags::Yes will always be built, this is ensured by blocking enqueueing of any subsequent reqest. AST worker will still block for initial preamble to reduce duplicate work.
Group with StorePreamblesInMemory.
This comment doesn't make much sense either - PreamblePeer describe's the thread's relation to the main ASTWorker thread, but readers here won't know what it is. What about:
Reuse even stale preambles, and rebuild them in the background.
This improves latency at the cost of accuracy.