Heat the milk and cream together with the onion, bay leaf, and peppercorns. Remove from the heat and leave to infuse while you make a roux.
Melt the butter in a heavy-based pan, stir in the flour and cook gently for 2-3 minutes
Strain the milk and add to the beer. Whisk this mixture into the roux a little at a time, keeping the sauce smooth. Cook for 5 more minutes.
Turn off the heat and add the Worcestershire sauce, 200g of the cheese, mustard and red wine vinegar followed by the egg yolks then a good grinding of black pepper. Beat well. Check for salt and add if needed. Also add any more mustard and Worcestershire sauce – you are looking for a strongly-flavoured, thick, piquant béchamel.
Leave to cool.
Lightly toast the bread on both sides, smear four of the slices with the cooled, thickened sauce and place a slice of ham on top, put the other slices of toast on that, more sauce and top with the rest of the sauce and reserved grated cheese.
Put the whole thing on a baking sheet and grill until golden and bubbling.