Add the egg whites and sugar to the bowl of a stand mixer, making sure the bowl is very clean first. Place over a pot of simmering water (but don't let the bottom of the bowl touch the water). Whisk constantly until the sugar is dissolved and the mixture is very hot. If you used regular egg whites, use a thermometer to make sure the mixture reaches 160º. For pasteurized egg whites, you don't need a thermometer.
Place the bowl back on the stand mixer fitted with the whisk attachment. Whisk on medium high speed until the mixture turns into voluminous, glossy meringue and the bottom of the bowl has cooled to room temperature. The meringue should be stiff enough that it won't slide out of the bowl if you turn it upside down.
Switch to the paddle attachment and begin incorporating the butter, one tablespoon at a time, on medium low speed. Wait until each tablespoon is mixed in before adding another. Don't worry if it looks curdled or separated.
Once all the butter is added, scrape down the sides of the bowl and mix on medium high speed until the buttercream is smooth and fluffy. If it hasn't come together after 5 minutes, it may be too warm. Refrigerate for 5 minutes then try mixing again. Mix in the vanilla and salt.
For vanilla buttercream, beat in 1 tablespoon of vanilla extract. For milk chocolate buttercream, melt 8 ounces of milk chocolate in a heatproof bowl over simmering water. Stir constantly and remove from heat when the chocolate is half melted. Continue stirring off heat until the chocolate is smooth. Allow to cool, then beat into the buttercream.