In a medium saucepan, combine the granulated sugar, dark brown sugar, water, light corn syrup, and lemon juice. Stir gently over medium heat until the sugars are completely dissolved.
Increase the heat to medium-high and bring the mixture to a boil without stirring. Allow it to boil until it turns a deep amber color, about 5-7 minutes.
Once your butterscotch has reached the desired color, remove it from the heat. Carefully stir in the pieces of unsalted butter and salt until smooth and well combined.
In a separate bowl, whisk together the heavy cream and 1 cup of whole milk. In another bowl, whisk the egg yolks until they are pale and slightly thickened. Set both bowls aside.
Slowly pour the cream mixture into the butterscotch mixture while whisking continuously to prevent the eggs from scrambling. Once combined, return the saucepan to low heat.
In a small bowl, whisk the cornstarch with the remaining cup of whole milk until smooth. Gradually add the cornstarch mixture to the saucepan while continuously whisking. Cook on low heat until the mixture thickens, about 5-10 minutes.
Once thickened, remove the saucepan from the heat and stir in the vanilla extract.
For an ultra-smooth texture, pour the pudding through a fine mesh strainer into a clean bowl or individual serving dishes.
Cover the pudding with plastic wrap, pressing it directly against the surface to prevent a skin from forming. Refrigerate for at least 4 hours, or until fully chilled and set.
Once chilled, your Best Butterscotch Pudding is ready to be served. You can top it with whipped cream, a sprinkle of sea salt, or even some crushed cookies for added texture.