In a medium saucepan off heat, whisk together milk, sugars, and cornstarch until smooth. Whisk in yolks, lemon zest and salt. Place pan over medium heat and cook, stirring occasionally at first, then constantly, until thickened and the whisk leaves a very defined trail in the pudding, 9 to 12 minutes.
Remove pan from heat, add lemon juice and butter, and stir until incorporated. Pour through a coarse sieve into a large serving bowl or individual serving dishes. Let cool to room temperature. Refrigerate, loosely covered, until set and thoroughly chilled, at least 2 hours or up to two days.