It is never an either-or. It is always a complex mix of what customers ask for, what the strategic priorities/market realities are.
Often the problem with these queries is that there are not enough devs complaining to MSFT. No PM/engg manager is going to ignore a bug/problem if it shows up high in customer requests.
On promotions - I think it's the reverse problem. People only get promoted for working on something that's perceived to be hard.