Heat the oven to 350°F (175°C). Grease an 8-inch square baking pan (20 cm) and line it with parchment paper, leaving an overhang on two sides for easy lifting.
Whisk the flour, baking powder, and salt together in a small bowl. Set aside.
In a large bowl, beat the eggs and sugar with an electric mixer on medium-high speed for 5 to 7 minutes, until the mixture is pale, thick, and falls in ribbons when the beaters are lifted. Beat in the vanilla.
Gently fold the flour mixture into the egg mixture in two additions, using a rubber spatula. Fold just until no dry streaks remain so the batter stays airy.
Stir the melted butter and milk together. Spoon a little batter into the butter mixture and stir to lighten it, then gently fold this mixture back into the main batter until combined.
Pour the batter into the prepared pan and smooth the top. Bake for 22 to 26 minutes, until the cake is golden and a toothpick inserted in the center comes out clean.
Cool the cake in the pan for 10 minutes, then lift it out using the parchment. Let it cool completely on a wire rack. For easier dipping, chill the cooled cake for 30 minutes.
Cut the cooled cake into 16 even squares. Place the coconut in a shallow bowl or rimmed plate.
To make the coating, sift the powdered sugar and cocoa powder into a medium heatproof bowl. In a small saucepan over low heat, warm the butter and milk just until the butter melts; do not boil. Pour over the cocoa mixture, add the vanilla, and whisk until smooth. The coating should be fluid enough to cling to the cake; whisk in extra milk 1 teaspoon at a time if it is too thick.
Using two forks, lower one cake square into the warm chocolate coating. Turn it quickly to cover all sides, letting the excess drip off. Roll the coated square in coconut and transfer it to a wire rack or parchment-lined tray. Repeat with the remaining squares, stirring the coating occasionally.
Let the coating set before serving. If the icing thickens while you work, warm it very gently and whisk in a small splash of milk.