This doesn't wash. The DOM is a declarative model, but that doesn't mean that a javascript program can't be a horror story of side effects and improperly grasped execution order.
Pulumi resources are immutable in the program after you declare them. I don’t think this analogy really works. It’s not like CDK - Pulumi does not compile down to an intermediate format.
When you write a Pulumi program you’re effectively creating a DAG in memory. The resources will be created in whatever order and with the maximum parallelization the dependencies allow.
I completely realize this, but simply the act of assembling that DAG in an imperative language adds a layer of cognitive load that is undesirable in something that's supposed to _declare_ configuration. Pulumi YAML looks tempting but it's simply not powerful enough to do a lot of things.
The other aspect of this is how it adds another requirement to your project - the setup and management of the language environment for the target language. Suddenly you've got another npm/bundler/etc. lockfile to keep up to date, your CI container images are double the size, your developers have another thing to fight homebrew to cooperate with...
Indeed, you cannot control the execution order (often much to my chagrin), only influence what the evaluator does via well-defined, declarative, options.