Before you begin, see the tips section of this recipe for suggestions on how to prevent your icing from developing crystals. If it does crystalize a little, that's OK! It will still look and taste great - it will just be a little bit grainier, like an old fashioned fudge.
Put the cocoa, milk, butter, sugar, and salt in a medium saucepan.
Cook slowly over very low heat, stirring gently until the butter is melted and the mixture looks smooth and glossy.
This may take a little longer than feels necessary—you're waiting for the sugar to dissolve, not just for the butter to melt.
A good visual cue: before boiling, the mixture should look like a smooth chocolate sauce. If you can see tiny sparkly grains along the bottom or sides of the pan, it isn't ready yet.
To test for this, you can rub a little syrup between your fingers (carefully, once cooled slightly)—it should feel completely smooth, not sandy.
Then bring it to a boil and set a timer for one minute. Cook without stirring for exactly one minute (per the original recipe).
Remove from heat and stir in the vanilla.
Beat immediately with a spatula or wooden spoon until the frosting begins to thicken. The consistency should be like a thick chocolate sauce—still loose enough to dip the cupcake tops, but thick enough to cling to the surface.
Dip the tops of your cupcakes into the frosting.
If the frosting hardens too fast while icing the cakes, moisten it with hot water to loosen it up.
If you are garnishing the cupcake tops (sprinkles, nuts, etc.) do so immediately.
The frosting will continue to set and become firm as it cools on the cupcakes.