In a medium saucepan over medium heat, whisk together the milk and flour.
Cook, whisking constantly, for 3-5 minutes, until the mixture thickens to a pudding-like consistency and coats the back of a spoon.
Remove from heat and let cool completely 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, about 2-3 minutes. Scrape down the sides as needed.
Add the cooled milk mixture to the butter mixture. Beat on medium-high speed for 2-3 minutes, until combined and fluffy.
Switch to the whisk attachment. Add vanilla and beat on high for 7-8 minutes, until smooth, light, and airy.