In a large stockpot, heat butter over medium-low heat. Add onion and thyme and cook until onions are translucent, about 5 minutes.
Add flour to stockpot to make a roux, whisking until well combined. Continue to whisk until color darkens slightly, about 5 to 8 minutes. Pour chicken stock into pot, whisking constantly until mixture is smooth. Bring to a simmer over low heat and cook for 20 minutes, whisking occasionally.
Add asparagus to pot and stir. Continue to cook until asparagus is very tender, about 10 to 15 minutes, then remove from heat.
Using a blender or an immersion blender, blend soup until smooth. (If using a blender, don’t fill more than halfway and be careful removing lid.) Strain soup through a mesh sieve to catch any remaining solids. Return soup to stove to rewarm and season to taste with salt and pepper.