Melt the butter (or bacon grease, lard or beef drippings - any of these will yield the most flavor) in a pan over medium-high heat and fry the onions until beginning to brown. Add the garlic and cook another minute.
Add the mushrooms and cook 5-7 minutes or until golden and the liquid from the mushrooms has evaporated.
Add the butter and melt. Add the flour, stir to combine and cook for about 2 minutes, stirring continually.
Add the beef broth, vinegar, thyme, sugar, salt and pepper. Whisk continually until the gravy is thickened. Cover and simmer on low, stirring occasionally, for 5-10 minutes. Add salt and pepper to taste. If you prefer the gravy thinner add a little more water (or heavy cream if using)
**If using this gravy for German Jägerschnitzel and you prefer a more basic, traditional gravy, omit the balsamic vinegar and thyme.