Bring a large pot of salted water to a boil. Set up a bowl of ice water near the stovetop.
Take 2 asparagus stalks and shave them into thin ribbons with a swivel vegetable peeler, then set aside. Slice the remaining stalks into diagonal pieces about 2 inches long.
Drop the sliced asparagus into the boiling water and cook 3 minutes. Scoop them out with a slotted spoon into the bowl of ice water.
Gently wipe the wild mushrooms with a cloth if they have debris clinging to them. Trim the stem ends and break or slice the mushrooms into large bite-size pieces. Slice the button mushrooms into quarters.
Set a large (12-inch) skillet over medium-high heat and add the oil. Put the mushrooms in the pan in one layer. Cook for 5 minutes without stirring, until they begin to brown. Add a large pinch of salt and stir the mushrooms. Cook for another 5 minutes or so, until they’ve given up their liquid and softened.
Cook the pasta until al dente, reserving ½ cup of the water before draining.
Add the shallot, garlic and butter to the mushrooms and stir. Cook 1 or 2 minutes, until the garlic is fragrant and the butter is melted. Stir in a little pasta water to loosen the sauce.
Drain the cooked asparagus and add to the skillet. Lower the heat. Add the drained pasta, thyme and parsley and toss with tongs (add more pasta water if needed). Add the reserved (raw) shaved asparagus and Parmesan, toss gently and serve.