Over medium to medium-low heat, melt the brown sugar with the salt and water ~ the water helps the sugar dissolve evenly. Once it starts to bubble, let it cook 5–6 minutes, or until it darkens slightly and smells rich and nutty. That’s when the butterscotch flavor develops. Don’t stir while it’s bubbling, but you can gently swirl the pan to even out the heat and prevent hot spots.
Allow the melted brown sugar to cool for a few minutes.
Meanwhile, dissolve the cornstarch in a little bit of the milk, and whisk until very smooth. Add the egg yolks, and whisk until smooth.
Add the corn starch slurry to the rest of the milk and cream, and whisk briefly to combine everything.
Add the milk/cream mixture to the partially cooled brown sugar, whisking as you go. The sugar will seize up and become hard, but don't worry, everything will melt once the pan goes back on the heat.
Return the pan to the heat, and gently bring the whole mixture to a boil over medium-low heat, whisking constantly. Once all the brown sugar has dissolved and the mixture is beginning to thicken, switch to a silicone spatula so that you can scrape the bottom and sides of the pan as it thickens.
Once the pudding comes to a boil, (it should be quite thick), take it off the heat and immediately pour it through a fine mesh strainer.
Add the butter, vanilla extract, and whiskey (if using), and whisk vigorously to combine (I whisked mine for a good minute or so to get the butter well incorporated.)
Pour the pudding into serving containers, and enjoy warm, or allow it to fully set in the fridge. It will be fully set in a couple hours.