Start by whisking together the Dutch processed cocoa, cornstarch, sugar, and a dash of salt in your medium saucepan. This ensures the cocoa and cornstarch are evenly distributed, preventing lumps and clumps later.
In a separate bowl, whisk the egg yolks until smooth. Then, slowly whisk in the half and half and whole milk until fully combined.
Gradually pour about a cup of the milk mixture into the saucepan with the dry ingredients, whisking constantly to create a smooth slurry. Then, pour this slurry back into the remaining milk mixture, whisking well. This step tempers the eggs, preventing curdling when heated.
Return the entire mixture to the saucepan and place it over medium heat. Stir constantly with your whisk or a heatproof spatula, making sure to reach the edges and bottom of the pan to avoid scorching. Cook until the pudding thickens and just starts to bubble, about 5-7 minutes.
Remove the pudding from heat and immediately whisk in the melted, slightly cooled semisweet chocolate until smooth and glossy.
Add the room-temperature butter and vanilla extract, whisking until the butter melts completely and is fully incorporated. This adds richness and a silky texture.
(Optional) For the smoothest pudding, strain the mixture through a fine mesh sieve into a clean bowl to remove any bits of cooked egg or lumps. Then, press a piece of plastic wrap directly on the surface of the pudding to prevent a skin from forming. Refrigerate for at least 3 hours, or until set and chilled.
Serve your Rich Double Chocolate Pudding chilled. Garnish with whipped cream, fresh berries, or shaved chocolate for an extra special touch.