Over medium/medium-low heat, melt the brown sugar with the salt and the water. The water helps the sugar to dissolve and melt evenly. Heat until bubbling, and continue to cook for 5-6 minutes more, keeping a close eye on it and making sure it doesn't burn. Don't stir it while it is cooking, but you can swirl the pan around a bit to distribute the heat if needed.
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.