Lightly grease an 8" square pan and line it with non-stick baking paper, leaving a little overhang for easy removal. Set aside. Preheat the oven to 160 C.
In a bowl, sift the flour, cocoa, baking soda and salt, if using. Set aside.
Combine the milk and lemon juice in a bowl, stir and set aside to let the milk curdle before using in the recipe.
In a mixing bowl, beat the butter and sugars with a hand mixer on medium speed until light and fluffy. Add the vanilla and beat gently to combine.
Add the soured milk (or buttermilk), alternating with the flour mixture, starting and ending with the flour mixture, so that the batter doesn't split. Fold gently as you go, to make a smooth, fairly thin batter. If needed, run a hand mixer through it on low speed for a few seconds to break up any lumps.
Pour into the prepared cake pan, smoothen the top and bake for 30 to 35 minutes until a toothpick poked in the center comes out clean and the cake is springy to the touch. The surface might have a few cracks. Leave to cool in the pan for 30 minutes, then using the paper overhang, lift the cake out and cool completely on a wire rack before frosting.
To make the frosting, beat the butter until creamy and smooth, then add the sifted sugar and cocoa, alternating with the cream. Beat till smooth and creamy. If needed, add more cream or whole milk to get the frosting to a spreadable consistency. Keep in mind that too much liquid will mess up with the texture of the frosting, it's supposed to be a little thick and fudgy.
Spread the frosting evenly over the cooled cake. Decorate with sprinkles if you like, then slice into 16 small or 9 large pieces. I like this cake best at room temperature, or if eating it later, store in the fridge in an airtight tin for 4 to 5 days, and let it come to room temperature or gently reheat pieces in the microwave before eating. The cake can also be frozen for longer. Happy baking!