In a medium saucepan over medium heat, whisk together the milk and flour. Cook, whisking constantly, for 3-5 minutes, or until no lumps remain and the mixture thickens and resembles a very thick pudding. It should coat the back of a spoon. Remove the pan from the heat and let the mixture cool to room temperature.
In the bowl of a stand mixer fitted with the paddle attachment, cream together the butter and sugar on medium speed until light and fluffy (2-3 minutes). Stop the mixer and use a rubber spatula to scrape down the sides of the bowl.
Add the cooled milk mixture to the bowl of the stand mixer. Beat on medium-high speed until the frosting is light and fluffy (2-3 minutes), pausing to scrape down the sides of the bowl as needed.
Switch to the whisk attachment. Add vanilla and mix on high for 7-8 minutes, or until the frosting is smooth and creamy.