Bring butter, granulated sugar, brown sugar, water, corn syrup, lemon juice, and salt to a boil in a large saucepan over medium heat, stirring occasionally to dissolve the sugar and melt the butter. Once the mixture is at a full rolling boil, cook, stirring occasionally, for until the mixture reaches 240 degrees F on a candy thermometer (about 5 minutes).
Immediately reduce the heat to medium-low and gently simmer (the mixture should maintain a slow, steady stream of bubbles), stirring frequently, until the mixture reaches 300 degrees F on a candy thermometer, about 12 to 16 minutes longer (it should be the color of dark peanut butter and have a slight burnt smell).
Remove the pan from heat; carefully pour ¼ cup of the heavy cream into the caramel mixture and swirl to incorporate (the mixture will bubble and steam). Allow the bubbling to subside, then whisk vigorously and scrape the corners of pan until the mixture is completely smooth, at least 30 seconds.
Return the pan to medium heat and gradually whisk in the remaining ¾ cup heavy cream until smooth. Whisk in 2 cups of the milk until the mixture is smooth, making sure to scrape corners and edges of the pan to remove any remaining bits of caramel.
Meanwhile, microwave the remaining ¼ cup milk for 45 seconds (it should be simmering). Whisk the egg yolks and cornstarch together in large bowl until smooth. Gradually whisk in the hot milk until smooth; set aside.
Return the saucepan to medium-high heat and bring the mixture to a full rolling boil, whisking frequently. Once mixture is boiling rapidly and beginning to climb toward the top of the pan, immediately pour it into the bowl with the yolk mixture in a single motion (do not add gradually). Whisk thoroughly for 10 to 15 seconds (mixture will thicken after a few seconds). Press the pudding through a fine-mesh sieve into a clean bowl and whisk in the vanilla extract.
Spray a piece of plastic wrap with non-stick cooking spray and press on the surface of pudding. Refrigerate until cold and set, at least 3 hours. Whisk the pudding until smooth before serving. Leftovers can be stored in the refrigerator, with plastic wrap pressed against the surface, for up to 4 days.