In a small pan, bring 2 cups of water to a boil and add the onions and simmer for 5 minutes.
Remove the onions with a slotted spoon. Cut off the root end, and squeeze the onion out of the skin. Set aside.
In a large skillet, bring the stock, garlic, 1 teaspoon salt, and 1/2 teaspoon of pepper to a simmer over medium-high heat.
Add the carrots, cover, and simmer for 5 minutes. Add the remaining asparagus and onions, cover again, and simmer for another 5 minutes, or until they are soft.
Meanwhile, cook the pasta in a pot of salted boiling water until al dente, about 3 minutes. Drain.
Stir in the peas. Next, add the cooked pasta, herbs, butter, zest, and lemon juice to the stock. Gently stir for 1 minute, or until butter is melted and pasta is coated.
Serve in pasta bowls and garnish with pea shoots and topped with shaved (or grated) Parmesan (if using).