Read through the recipe and prepare and gather all of your ingredients before beginning.
In a medium saucepan, whisk together sugar, cornstarch, cocoa powder, and salt.
Add milk and transfer to stovetop over medium-low heat and whisk ingredients together.
Whisk ingredients frequently on medium heat until ingredients begin to thicken (this will take several minutes). Do not increase the heat to expedite the process, as it is important that the sugars melt for the pudding to ultimately reach the desired consistency.
Once mixture has thickened (it should be approaching a pudding consistency and be able to coat the back of a spoon so that no metal shows through) whisk constantly, the mixture will come to a boil (again, don't increase heat, this will take several minutes but the mixture will eventually come to a boil) and continue to whisk for 60 seconds (use a timer) before removing from heat (still whisking constantly).
Immediately add chopped chocolate, butter, and vanilla extract.
Whisk until ingredients are smooth and chocolate and butter are completely melted.
Pour your pudding through a fine mesh sieve (optional, but this will eliminate any lumps) into a medium-sized heatproof bowl. Allow to cool for 15 minutes, stirring occasionally to prevent skin from forming.
Cover the surface of your pudding with clear plastic wrap, making sure that the clear wrap is pressed against the surface of the chocolate to prevent a skin from forming.
Refrigerate at least 4 hours to allow pudding to cool completely before serving, topped with homemade whipped cream (if desired).