Melt butter in a soup pot over medium heat. Add onion and salt; cook and stir until onion is soft and golden, about 10 minutes.
Add stock, salt (to taste), and pepper (to taste). Raise heat to high until at a boil, and then reduce heat to medium. Simmer 15 minutes.
Place asparagus pieces in simmering broth. Cook, stirring occasionally until asparagus is just tender and still bright green, 5 to 10 minutes. Turn heat to low.
Use an immersion (hand) blender to blend soup until smooth, about 3 minutes.
For a finer texture, strain soup through mesh strainer (I personally strain ~ half of the soup using this process). Return strained soup to pot and place on stove.
Add heavy cream and stir until smooth.
Serve! You can optionally add an extra drizzle of cream and an asparagus tip for decoration.