Melt butter in a large saucepan over medium heat until foamy.
Add mushrooms, onion, and garlic, and sauté until mushrooms release liquid, shrink, and develop golden edges, about 5 to 10 minutes.
Sprinkle in the flour and whisk continuously until the mixture is light tan and emits a nutty aroma, about 1 minute.
Gradually whisk in chicken broth and water, bringing to a gentle boil, then reduce heat and simmer until the soup thickens slightly, about 15 minutes.
Lower heat to low, stir in half-and-half until the soup is glossy, then season with salt and pepper. If needed, thin with additional broth or water.
Notes
In my first test, I found that wiping mushrooms clean instead of washing preserves their natural flavor and prevents sogginess.After the second batch, I realized letting mushrooms brown undisturbed for a couple of minutes builds deeper color and umami.For the third trial, I tested reheating in a double boiler; this gentle method kept the soup from splitting in the fridge leftovers.