Whisk together flour, sugar and salt in a saucepan.
Add the milk and whisk until combined
Place saucepan over low heat and whisk continuously as the mixture comes to a boil
Once it boils , cook for 1-2 minutes, then take the pan off the heat and whisk for a minute or so. It should be lump free and smooth
Let this cool down to room temperature. To hasten the cooling , you can transfer this mixture into another wider bowl or plate . Cover it with plastic wrap, pressing the plastic wrap directly onto the mixture. This prevents a skin from forming. Refrigerate until cool.
Once the mixture is cool, beat the butter until fluffy and pale,.This will take 5-10 minutes using an electric mixer.
Once the butter is really smooth and pale (important!) , add the cooled mixture one tablespoon at a time, mixing or beating well after each addition
After all the mixture has been added, mix or beat for another 3-5 minutes. The buttercream should be smooth and creamy
Beat in the vanilla.