In a large soup pan over medium-high heat add the butter and onion. Stir until the onion is well coated, and allow to sauté until translucent, a few minutes. Stir in the potatoes, and cook until completely tender, about 10 minutes - you can add a splash of water to the pan if it seems like a bit of moisture will help. Stir in the curry paste, allow to cook another minute or two, and then add the coconut milk, salt, and water. Bring to a simmer, and add the asparagus. Cook until the asparagus is tender, 2-3 minutes, and then puree using a blender or hand blender until the soup is completely silky smooth.