In a medium saucepan away from heat, stir together the cocoa powder and cornstarch. Add a bit of the milk, whisking thoroughly to make a smooth paste. Continue adding milk in a slow drizzle while whisking constantly to blend. When all milk has been added, place over medium-high heat, add the sugar and salt, and bring to a boil, stirring constantly.
Reduce heat to medium-low and allow the pudding the bubble and thicken for two minutes, still stirring frequently. Remove it from the heat so you can do the next step.
In a heat-proof measuring cup or bowl, whisk the egg and egg yolks. In a very slow stream, whisking constantly, add about 1/2 cup of the pudding mixture to the eggs to temper them (avoid scrambling). Slowly whisk this egg mixture into the pot with the rest of the pudding. Return to heat, bring to a boil, stirring constantly, then remove from heat once more.
Add butter, vanilla, and chopped chocolate, and stir until chocolate is melted completely. If the pudding has curdled or has remaining cocoa/cornstarch lumps, you can just force it through a fine-mesh sieve into a bowl. Otherwise, just transfer directly to a heat-proof bowl, press parchment paper directly onto the surface (I prefer it to using plastic wrap directly on hot foods), and refrigerate until chilled, at least four hours. OR eat it hot with whipped cream.