Melt chocolate over a pot of simmering water, being certain not to allow the bowl to touch the water (or melt in microwave, stirring every 20 seconds) and reserve.
Heat milk with orange zest over medium heat until it just comes to a simmer.
Whisk together sugar, yolks, cornstarch and cocoa powder. Adding a little at a time, ladle milk into egg mixture, whisking constantly until all milk is added.
Pour liquid back into pot and cook over medium heat, whisking constantly for about
3 minutes, until it thickens. Remove from heat immediately and scrape into bowl (to prevent pudding from continuing to cook). Stir in chocolate, butter and liqueur until fully incorporated.
If you wish to serve pudding in individual cups, pour into cups now and cover surface of each with plastic wrap (to prevent a skin from forming). Otherwise cover surface of pudding with plastic wrap and chill for an hour and a half until set.
Pudding can be made up to 2 days in advance. To serve, garnish with a dollop of whipped cream and a fresh orange slice.