In a 10-inch skillet or 3-quart saucier, whisk together flour and milk. Place over medium heat, whisking constantly, and cook until thick and pudding-like, about 2 minutes.
Remove from heat, add sugar and salt. Whisk until sugar has dissolved and the “pudding” has come together. It may seem thin.
Scrape mixture into a wide, shallow dish (like a pie plate) and cool to approximately 70 degrees. Place butter in the bowl of a stand mixer fitted with a paddle attachment. Mix on low until the butter looks smooth, then increase speed to medium and beat until soft and light, about 5 minutes.
Begin adding the cooled pudding, a few tablespoons at a time. Once fully incorporated, scrape bowl and beater and resume beating until completely smooth.
Switch to whisk attachment and add vanilla. Whip on low to combine, then increase speed to medium-high and continue whipping until smooth and soft, with a melt-in-your- mouth consistency (approximately 3 minutes).
Season to taste with additional vanilla or salt.
Use immediately. If frosting seems too soft, pop in the fridge for 15 minutes and re-whip.
To save: the frosting can be refrigerated or frozen in an appropriate container. When ready to use, thaw to room temperature (about 70 degrees) and re-whip.