Preheat the oven to 180 degrees C. Grease a Swiss roll tin. Line with baking paper then grease and flour the baking paper.
Sponge: In a large mixing bowl beat egg yolks at high speed until light and fluffy. Gradually add sugar beating until mixture is thick and light-coloured. Add flour and cocoa while beating on low speed.
In another bowl beat egg whites until soft peaks form then fold into egg yolk mixture. Fold in gently until no streaks of white remaining.
Spread cake mixture evenly in prepared tin. Bake in the preheated oven for 15 minutes or until cake springs back when touched lightly. Cover with baking paper and cool slightly on cake rack.
Dust a clean towel with icing sugar. Run a knife around the edge of the tin and turn the warm cake out onto the towel. Remove and discard the baking paper.
Starting at the short edge of the cake roll the cake up with the towel. Cool for 30 minutes.
Filling: Combine flour and milk in a saucepan. Cook over low heat; stirring until thick. Cool.
In a mixing bowl cream sugar, butter and vanilla. Add cooled flour and milk mixture; beat until fluffy. Fold in walnuts if desired. Spread on cake; roll up as you would a Swiss roll starting from one short end.
Icing: Beat butter until fluffy in a small bowl. Beat in sugar, cocoa and coffee. Spread over cake using a fork to create a bark-like effect. Dust with icing sugar and sprinkle with nuts if desired.