Combine the milk and 1/4 cup of the sugar in a medium-sized saucepan. Set aside.
In a separate medium mixing bowl, whisk together the remaining sugar, egg yolks, cornstarch, vanilla extract and salt. Whisk vigorously, until the mixture is combined and little bit foamy. Set the mixture to the side for the moment.
With the saucepan from step 1, heat the mixture over medium-low heat, stirring frequently to prevent scorching and for the sugar to dissolve. Bring the mixture to a simmer, then remove from heat.
Pour about 1/3 of the hot milk mixture into the egg yolk mixture, whisking the egg mixture as you pour the hot milk (this keeps the eggs from "setting" and forming lumps). Whisk vigorously to combine. Slowly add the remaining milk mixture, whisking all the while. The mixture will be quite liquidy.
Pour the mixture back into the same saucepan; no need to wash. Place the saucepan back over medium-low heat, stirring constantly, until the custard mixture becomes thick. At the first sign of bubbling, remove the mixture from heat.
Transfer the custard to a bowl and immediately cover with plastic wrap, pressing the plastic directly on the surface of the custard to prevent a “skin” from forming.
Place the custard in the refrigerator; let it cool to room temperature. Don’t rush this step — it is key in attaining a smooth texture in your buttercream. (If you refrigerate the custard to cool it down quickly you need to make sure to bring it back to room temperature, it should NOT be cold when added to the butter).
Once your custard mixture has cooled down , it’s time to finish your buttercream. In a stand mixer fitted with the paddle attachment or using a hand mixer, cream the butter until light and fluffy, 2-3 minutes on high speed.
Add the custard mixture to the creamed butter and continue mixing on high speed until the frosting is smooth and creamy, anywhere from 3 to 5 minutes.