Heat butter and olive oil in a large skillet over medium-low heat. Add sliced onions with a pinch of salt and cook slowly for 20-25 minutes, stirring occasionally, until deeply golden and caramelized. Remove from heat and let cool completely.
In a large mixing bowl, combine the sausage meat, cooled caramelized onions, minced garlic, thyme, Worcestershire sauce, and Dijon mustard. Season with salt and pepper. Mix thoroughly with your hands until evenly distributed. Fold in Gruyère cheese if using.
Preheat your oven to 200°C (400°F). Line two baking sheets with parchment paper. On a lightly floured surface, roll out each puff pastry sheet and cut in half lengthwise to create four long strips.
Divide the sausage mixture into four equal portions. Shape each portion into a log down the center of each pastry strip, leaving a 2cm border on each side.
Brush one long edge of each pastry strip with the egg wash mixture. Fold the pastry over the filling and press firmly to seal. Place seam-side down on the prepared baking sheets.
Chill the filled pastry logs in the refrigerator for 15 minutes to firm up. This makes slicing cleaner and prevents the filling from spreading.
Cut each log into 6-8 pieces depending on desired size. Place on baking sheets, brush tops with remaining egg wash, and cut a small slit in the top of each roll for steam to escape.
Bake for 22-28 minutes until the pastry is puffed and deeply golden brown. The filling should be cooked through with no pink remaining. Internal temperature should reach 75°C.
Remove from oven and let rest for 5 minutes before serving. Serve warm with tomato sauce, mustard, or chutney.