In a small bowl: combine ½ cup of cold milk, cornstarch and mix until fully dissolved.
In a sauce pan: add whole milk, cocoa powder, sugar, salt and mix. Cook on low-medium for 5-8 minutes or until simmer and sugar is fully dissolved. Stir frequently as it may burn or scorch and turn light (not very nice tasting) brown.
While the milk is heating- whisk the egg yolks in a small bowl. Add 1 tbsp of the milk mixture into the yolks and whisk. Repeat this step 2 more times. Whisk the milk mixture and slowly pour the yolk mixture into the pan while whisking.
Stir the cornstarch mixture again and add to the pan. Cook on low for 5-6 minutes and whisk the entire time or until simmer and pudding thickens. Remove the pan from the heat source.
Add cold butter cubes to the pan, vanilla extract and whisk everything together until the butter has fully melted. Transfer to a bowl or individual cups.
Cover with saran wrap - place a piece of saran wrap directly over the surface of the pudding (this will prevent skin forming). Let rest at room temperature for 30 minutes. Then, refrigerate for 6 hours or overnight.