Cut the rough ends off the asparagus but save them. Bring a pot of water to boil, large enough to fit the asparagus in. When it comes to a boil, drop the asparagus in, including the tough ends, and cook for just 4 minutes. Pour off 3 cups of the water to use for the soup. Pour the rest into a colander and pick out the rough ends and discard. Rinse with cold water and then put some ice on top. This helps keep the lovely green color.
Dry the pan roughly and then add the butter and oil over low heat. Add the onion, garlic and leeks and cook, stirring now and then, a few minutes. Season with salt and pepper, then cover the pot and cook over low heat for 15 minutes. Watch that the heat doesn't get too high. You want it all soft but not browning at all.
Uncover and the 3 cups of water the asparagus cooked in, bring to a boil, then reduce heat to a simmer. Cover the pot and cook 10 minutes or so. Uncover the pot and add the asparagus and cook at a low simmer another 5 minutes.
Use an immersion blender (one of my favorite tools!) to blend the soup. Taste and adjust the seasoning.
If you like, serve with some fresh chopped chives. I didn't do this because my chives aren't growing yet but I will next time. This was really good!