Preheat oven to 350 degrees F. Butter 2 9-inch round cake pans then line bottom with a round of parchment paper. Butter parchment then dust pans lightly with cocoa powder or flour and shake out excess. Set aside.
In a large mixing bowl whisk together flour, sugar, cocoa powder, baking powder, baking soda, and salt.
Add the milk, eggs and vanilla and using an electric hand mixer beat on medium speed until combined. Reduce the speed to low and mix in the oil.
With the mixer still on low, carefully and slowly pour in boiling water and mix until well combined, about 2 - 3 minutes. Pour batter into prepared cake pans.
Bake until toothpick inserted into center comes out clean, about 30 - 35 minutes. Let cakes cook 10 minutes then invert onto wire racks to cool completely.
Once cool spread about 1/3 of the frosting over one layer of cake. Top with the second layer of cake and frost only the top of the cake with the remaining frosting.
For the frosting: in a large saucepan whisk together egg yolks and evaporated milk until very well combined.
Add in sugar and whisk to dissolve sugar. Add butter and cook mixture over medium-low heat, whisking constantly, until mixture has thickened, about 10 - 12 minutes.
Remove pan from heat, add in vanilla, coconut, coconut and pecans. Let cool until just warm then spread over cake.