Combine the cornstarch, sugar and salt in a medium saucepan. Add in the water first and whisk well so that lumps don’t form and the mixture is well dissolved. Then add in the milk and whisk to combine.
Place the saucepan over medium-low heat and whisk the mixture often. After about 3-4 minutes or so, the mixture should begin to thicken, enough that it will coat the back of a spoon and if you draw a line with your finger, it will stay separate. The mixture should be at a very slow simmer at this point. Cook it for another 2 minutes, or until it starts to get quite thick and gloopy.
At this point add in the chocolate and continue stirring with a spatula until chocolate is fully incorporated and mixture is quite thick (about 30 seconds). Make sure to scrape the bottom and sides of the pan with a spatula so the mixture is homogeneous.
As soon as the chocolate is well incorporated, remove from heat and stir in the optional vanilla extract and coffee liqueur.
Divide the pudding into ramekins/glasses and chill in the refrigerator for about 2 hours before serving. If you would like to prevent a film from forming over the surface, cover the surface of each ramekin with plastic wrap (the wrap should be pressed onto the surface of the pudding).
Optionally, whip the heavy cream with powdered sugar and serve the puddings garnished with a dollop of whipped cream and a dusting of cocoa powder. Top with your favorite fruit, if desired.