Cook the spaghetti in salted water according to package directions. Drain, reserving at least 1 cup of the cooking water.
Meanwhile, heat the milk, onion, peppercorns and garlic in a saucepan over medium high heat.
Cook until the milk begins to steam and set aside.
In a separate saucepan, melt the butter over medium-high heat.
Sprinkle the flour and whisk until the flour and butter are a paste.
Cook for 30 seconds.
Strain the infused milk and add about half to the roux.
Whisk until smooth, and then add the remaining milk. Reduce heat to low.
Add the salt and dry mustard.
Simmer for 2 minutes.
Add the gruyere, white cheddar, parmesan, and Worcestershire sauce.
Cook, stirring often, until the cheese melts.
Add ½ to 1 cup of the pasta water, to thin the sauce to the desired consistency. Stir in the cooked and drained noodles.
Garnish with parsley, pepper, and additional cheese if desired.