> but rather in this specific case we need it to be executed after doB() is done.
Why is that? If it needs any result from doB() then it is a dependencies that must be specified. If it needs to be done only after doB is successful then it is a dependency, just an implicit one we rely on the procedural execution to handle. In either case some sort of surrogate dependency (or better syntax) would have to be introduced.
But the point is that either would necessitate or be aided by graphical programming.