Combine the cocoa powder, cornstarch, sugar, and salt in a large saucepan over medium high heat. Slowly whisk in the cream, then whisk in the egg yolks until well blended, then whisk in the milk. Let the mixture come to a brisk simmer, whisking almost constantly and making sure to keep scraping the sides and bottom of the saucepan. Let the mixture simmer until it starts to thicken, 1 to 2 minutes, then add the chocolate and stir until it melts. Reduce the heat to medium and continue to cook, whisking frequently, until the pudding is fairly thick, about 2 minutes (it will thicken much more upon cooling). Whisk in the butter and vanilla until the butter has melted.
You can strain the pudding through a fine mesh strainer if you’re determined to rid the pudding of any lumps or bumps but if you don’t have the time or inclination to dirty up one more utensil, then just transfer the pudding into a big serving bowl, or a bunch of individual servings dishes, press some plastic wrap directly on top of the pudding and refrigerate until chilled – about 2 hours or more for a bigger bowl, at least one hour for smaller servings. Unless you like your pudding warm, in which case just let it sit at room temp for about 20 to 30 minutes and don’t bother to refrigerate.
Notes
Some fun Pudding Variations:
Cointreau or another orange liqueur
Frangelico or another nut liqueur
Godiva, or another coffee liqueur
Baileys or Carolan’s or another Irish Cream liqueur