Heat the milk in a small saucepan over medium heat until it's steaming and there are small bubbles coming up around the edges, but do not let it boil.
While the milk is heating, put the yolks, sugar and salt into the bowl of an electric mixer fitted with a whisk attachment. Whisk at medium high speed until the eggs are a shiny pale yellow color (about 2 minutes).
Add the cornstarch and cocoa powder and whisk until the mixture is smooth, scraping down the bowl as needed.
With the mixer running at low speed, slowly pour in the hot milk along the edge of the bowl being careful to avoid the whisk. A pouring shield will help.
Wash the saucepan out and then strain the pudding mixture back into the pot through a fine mesh sieve.
Put the pot back on the stove over medium heat and cook the chocolate pudding, stirring constantly with the spatula. Be sure to scrape up the bottom of the pan as the mixture thickens so it doesn't burn.
Your pudding is done when it's very thick and has reached 170 degrees F. Don't worry if some lumps form, provided you strained the mixture in step 5, the lumps should go away in the next step.
Turn off the heat and then add the chocolate a little bit at a time. Stir vigorously with the spatula to incorporate the melting chocolate and to break up any lumps.
Once all the chocolate has been added and your pudding is smooth, stir in the butter, cream and vanilla until uniformly incorporated.
The pudding can be served warm, or you can cover with plastic wrap pressed up against the pudding to chill.