Make the pudding: In a medium bowl, mix together the dark brown sugar, flour, and salt. Add the milk and egg yolks and whisk until smooth. Set aside.
¾ cup lightly packed dark brown sugar, ½ cup all-purpose flour, 1 tsp kosher salt, 1 ½ cups whole milk, 4 egg yolks
Heat the cream: In a small saucepan, heat the heavy cream until it is steaming. Set aside.
1 ⅓ cups heavy cream
Caramelize the sugar: Pour the granulated sugar into a 4-quart saucepan and shake the pan so the sugar is in an even layer. Set it over medium heat. Do not stir, but watch closely. When the sugar begins to turn clear and become a liquid, slowly swirl the pan until it is all melted, 6-8 minutes. Continue to cook the sugar until it is a dark amber color, 4-6 minutes.
¼ cup granulated sugar
Add the cream: Remove the sugar from the heat and slowly add the warm heavy cream. The sugar will bubble, and some will solidify. Return the saucepan to medium heat and stir until the sugar has melted into the cream, 4-6 minutes.
Temper: Remove the mixture from the heat, and while whisking, slowly pour the hot cream/sugar mixture into the egg yolk/milk mixture to temper the yolks. Return the mixture to the saucepan.
Cook: Set the pan over medium heat and whisk constantly until it becomes thick with large bubbles forming in the middle of the pudding, 6-8 minutes. Remove from the heat. Add the butter and vanilla extract and stir until smooth.
3 tbsp unsalted butter, 1 ½ tsp vanilla extract
Chill: Pour into a bowl and cover with plastic wrap, pressing the wrap directly onto the surface of the pudding to prevent a skin from forming. Refrigerate the pudding for 1 hour or up to 2 days.