Make the frosting: In a medium saucepan, whisk together flour and 1/2 cup of milk until smooth. Set over medium-high heat and let cook for 3 minutes, or until slightly hot. Whisk in remaining milk and salt. Whisk constantly until the mixture has thickened to the consistency of unset pudding (this can take up to 10 minutes). Remove from heat and pour the mixture into a shallow dish. Place in the refrigerator until cool. When cool, mixture will be thick like custard.
In a large bowl (or bowl of a stand mixer, if you have one) beat the butter and sugar together until fluffy. Add vanilla and mix well. Beat in cooled flour mixture one tablespoon at a time on medium-high speed. When all the flour mixture is added beat on high speed until light and fluffy, about 6 minutes. Rub a little frosting between your fingers, if sugar granules remain, beat for 4 more minutes, or until granules cannot be detected with fingers.