Take the vegetable or chicken stock and place in a medium pot over medium-high heat, until at a low simmer. Maintain this heat for the duration of cooking.
Chop your onion, then wash, trim, and cut your asparagus into 1 inch pieces on a bias. Reserve. Shred the parmesan and also put aside.
In a large dutch oven or sauté pan, melt 2 tablespoons of butter with 1 tablespoon of olive oil over medium heat. Cook until the butter is slightly foamy, but not brown. Add in the onion. Sauté for 2-3 minutes, but be careful not to brown the onion - you just want to soften them until they are translucent.
Next, pour in the rice. Stir to coat in the butter/onion sauce and cook for 3-5 minutes. This will help the starches release.
Start to add the simmering stock, about 1/2 a cup at a time, mixing to combine. Do not add more stock to the rice until the previous portion has just about evaporated. Keep the temperature at a low simmer. Continue to stir and add stock as needed, along with one hefty pinch of salt.
After about 15 minutes of pouring stock, stirring, and cooking, give the rice a quick taste. The rice should be softening, but still have some firmness in the middle of the grain. If you aren't quite there yet (i.e. too crunchy), continue to add stock and simmer.
Once you have reached the 'mostly cooked' stage, add the sliced mushrooms and another dose of stock. The mushrooms will reduce in size (and release their deliciousness) after about 3 minutes.
Add the chopped asparagus and stir, for 2-3 minutes, still adding stock if the previous liquid has evaporated. The asparagus will turn a bright green when cooked.
If your rice is cooked to the point you prefer (I like a soft outside and just a hint of toothsome texture in the middle), take off the heat and add the remaining 2 tablespoons of butter. Stir well until completely melted. Add the shredded parmesan cheese as well, and stir until combined.
Adjust salt and add fresh ground pepper if desired.