Begin by cleaning and chopping the portobello, cremini, and oyster mushrooms into bite-sized pieces.
In a large saucepan over medium-high heat, sauté the mushrooms in batches with a couple of tablespoons of butter, making sure not to overcrowd the pan, until they are browned and fully cooked.
Next, thinly slice the shallots and mince the garlic cloves.
Add the remaining butter, shallots, garlic, thyme, and rosemary to the pot with the last batch of mushrooms, and sauté until the shallots become soft.
Set aside about one cup of the mushroom-shallot mixture for later use.
In the same pot, melt another two tablespoons of butter, then whisk in a quarter cup of all-purpose flour, cooking until the flour loses its white color.
Gradually pour in about two cups of chicken stock, stirring to combine, and bring the mixture to a simmer until it thickens to a gravy-like consistency.
If desired, add a splash of wine and cook until the aroma of the wine dissipates.
Stir in about two cups of heavy cream and let the soup simmer until it reaches your preferred consistency; you can thin it out with additional chicken stock if it becomes too thick.
Carefully blend the hot soup, allowing steam to escape, then return the blended soup to the pot and bring it back to a simmer.
Finely mince the reserved mushroom-shallot mixture and stir it into the soup for added texture.
Finally, adjust the seasoning with salt and pepper, and thin with more chicken stock if necessary.
Serve the soup hot, optionally accompanied by onion rings instead of bread.
