In a small mixing bowl, whisk together the egg yolks and cornstarch until well combined. Set aside.
In a 4 cup measure, stir together the milk and heavy cream. Set aside.
Add the brown sugar, water, and salt to a medium sized heavy duty saucepan Cook over medium heat until the sugar is dissolved and begins to bubble. Continue to cook for 2 minutes, stirring often to prevent burning.
Slowly whisk the milk and heavy cream into the brown sugar mixture. Continue to cook over medium heat until the mixture begins to boil.
Remove ½ cup of the milk mixture from the saucepan and whisk into the egg yolk mixture until fully incorporated.
Slowly whisk the egg yolk mixture back into the milk mixture. Turn the heat down to low and continue to whisk as the pudding bubbles and thickens. Cook for 1 minute while continuing to stir.
Remove the pudding from the heat and let it cool for 5 minutes. Add the butter and vanilla extract. Stir until smooth. Refrigerate at least 4 hours prior to serving.
Notes
The milk and heavy cream will spatter and sizzle when adding it to the brown sugar mixture so it is important to add the ingredients slowly and carefully.
Be sure to whisk constantly when adding the hot milk to the egg yolk mixture to prevent the eggs from scrambling.
Whisk constantly when adding the egg yolk mixture back to the milk mixture on the stove.
To prevent a skin from forming on top of the pudding, I like to place plastic wrap over the top of the pudding, making sure it touches the pudding.