Whisk the whole milk and heavy cream together in a medium bowl. Set aside. Whisk the egg yolks and cornstarch together in a medium bowl. Set aside. Have both ready to go before starting.
Whisk the brown sugar, water, and salt together in a medium-sized heavy-duty saucepan over medium heat. Without stirring, allow to cook and bubble until slightly darker brown, about 3-4 minutes. It should begin to smell caramelized at that point.
Slowly and carefully whisk in the heavy cream and milk mixture. It will sizzle and it may splatter, so pour in very slowly whisking constantly. Cook on medium heat until mixture begins to boil. Keep an eye on this as it can bubble over! Once it's boiling, remove about 1/2 cup of the mixture and, in a slow and steady stream, whisk into the egg yolks. In a slow and steady stream, pour and whisk the egg yolk mixture into the pot with the remaining milk mixture.
Turn the heat down to low. The pudding will immediately begin to bubble and thicken up. Whisk constantly and cook for 1 minute. Remove from heat and stir in the butter until completely smooth, then add the vanilla. Let cool for 5 minutes off the heat. This is an optional step, but using a very mesh sieve, pour the pudding through the sieve into a large bowl to catch any potential lumps.
Pour into a serving bowl or into individual containers. Cover with plastic wrap, making sure the plastic wrap is touching the top of the pudding all over. Refrigerate for 4 hours or overnight. This will help to thicken further.
Serve with homemade cinnamon applesauce on top.