Cook the onions. Melt the butter in an 8- to 10-inch nonstick skillet over medium heat. Add the onion and season with a pinch of salt. Sauté, stirring occasionally, for around 7-8 minutes or until softened and beginning to turn lightly golden.
Cook the mushrooms. Add the mushrooms and cook, stirring occasionally, for 5-6 minutes, or until all of the liquid evaporates, and the mushrooms are soft and beginning to brown.
Add the balsamic vinegar. Stir in the balsamic vinegar and thyme, if using, and cook for 30 seconds longer. Remove from the skillet, transfer to a bowl, and set aside. Wipe out the skillet, if needed.
Prepare the egg mixture. In a medium mixing bowl, whisk together the egg whites, milk, mustard, 1/4 teaspoon kosher salt, and black pepper.
Cook the eggs. Generously coat the same skillet with cooking spray and place over medium heat. When hot, add the egg mixture and cook until the edges start to set.
Tilt the pan. Carefully slide a rubber spatula under a portion of the omelet’s edge, then tilt the pan slightly toward the spatula so some of the uncooked egg flows beneath the edge of the forming omelet. Repeat around the edge of the omelet a few times until most of the egg mixture is set.
Add filling and cover. Spoon the mushroom mixture over one half of the cooking egg. Cover, reduce heat to medium-low, and continue cooking until the eggs are fully set on top, around 2-3 minutes.
Fold and finish. Using a wide spatula, loosen the underside of the omelet that doesn’t have the onion mixture, fold it in half to enclose the onion mixture, cover the pan, remove from heat, and let rest for 1 minute.
Serve. Slide the omelet onto a plate and garnish with chopped parsley. For 2 servings, cut the omelet in half.