Sift the Dutch-processed cocoa, cornstarch, sugar, and dash of salt into a large saucepan.
In a small bowl, lightly whisk the 3 egg yolks until smooth.
Add the 1 cup half and half to the dry ingredients in the saucepan and whisk until no lumps remain.
Whisk in the egg yolks until fully incorporated, then whisk in the 2 cups whole milk until the mixture is smooth.
Stir in the 6 ounces melted, slightly cooled semisweet chocolate (it may clump at first; keep stirring until it blends in).
Place the saucepan over medium heat and whisk constantly until the mixture comes to a gentle boil and begins to thicken.
Reduce the heat to low and continue stirring with a wooden spoon or spatula for about 2 minutes, or until the pudding is noticeably thicker and reaches about 200°F (93°C) if using a thermometer.
Remove the pan from the heat and immediately pass the pudding through a fine-mesh sieve into a medium bowl to remove any lumps.
Stir in the 1 tablespoon room-temperature butter and 2 teaspoons vanilla until the pudding is smooth.
If chilling, press a piece of plastic wrap directly onto the surface of the pudding to prevent a skin from forming; otherwise, divide into individual bowls if desired.
Serve warm or chilled.