Stir together the milk and cream in a measuring cup or bowl with a spout. Set aside.
2½ cups whole milk, 1½ cups heavy cream
In a medium heatproof bowl, whisk together the egg yolks and cornstarch until pale yellow, about 1 minute. Set aside.
5 large egg yolks, 2 tablespoons cornstarch
Add the brown sugar, water, and salt to a high-sided saucepan set over medium heat. Cook the mixture until it begins to bubble, about 3-4 minutes.
1 cup brown sugar, ¼ cup water, ¼ teaspoon kosher salt
Begin to swirl the mixture gently to ensure it doesn’t burn, but don’t stir it! Once the mixture is bubbling, cook until the mixture reaches 240°F, another 3-4 minutes.
Remove the pan from the heat and very slowly add the milk/cream mixture, whisking constantly. It will bubble and splatter so stand back and pour carefully.
Once all of the milk has been incorporated, return the pan to the heat and cook until the mixture begins to steam, about 2 minutes.
Slowly add 1 cup of the milk mixture into the egg yolks, whisking constantly so they don’t scramble. Then, whisk the egg yolk mixture back into the pot– again, pour slowly and whisk constantly!
Cook for 2-3 minutes, or until the pudding has thickened enough to coat the back of a spoon. Remove from the heat immediately.
Pour the pudding through a fine mesh sieve to remove any lumps of curdled milk or scrambled egg. This step is optional, but recommended.
Add the butter and vanilla to the pudding and whisk to combine.
3 tablespoons unsalted butter, 2 teaspoons pure vanilla extract
Place plastic wrap touching the surface of the pudding so it doesn’t form a skin. Cool completely in the fridge, about 4 hours.
To serve, place the pudding in a small bowl and top with caramel sauce and whipped cream.
Caramel sauce, Whipped cream