Stir together the milk and lemon juice and set aside to sour. You can also use buttermilk if you have that on hand.
Line an 8" square pan with non-stick baking paper, leaving a little overhang for easy removal. Set aside. Preheat the oven to 160 C.
In a mixing bowl, beat the butter and sugars with a hand mixer until light and fluffy. Add the egg and vanilla and beat well till combined.
Sift in the flour, cocoa, baking powder, baking soda and salt, if using. Stir briefly to combine.
Now gradually pour in the soured milk, using the hand mixer on low speed to beat the batter as you go, or a silicone spatula which avoids splatters. A few lumps are ok, so do not over-mix the batter.
Pour into the prepared cake pan, smoothen the top and bake for 40 to 45 minutes until a toothpick poked in the center comes out clean and the cake is springy to the touch. Leave to cool in the pan for 20 minutes, then using the overhang, lift the cake out and cool completely on a wire rack before frosting.
To make the frosting, beat the butter until smooth and creamy, then sift in the icing sugar and cocoa. Stir by hand to moisten the dry ingredients a little so they don't fly everywhere when you use the mixer, then beat again on low speed, adding the cream a tablespoon at a time to get it to your desired consistency. Feel free to add more cream or sugar to make it thinner and sweeter if you prefer. The frosting is thick and when you lift the batter out, it should form soft peaks.
Spread the frosting evenly over the cooled cake, using a small spoon to make little swirly patterns on the top. I usually like cakes freshly frosted, but this one benefits from a 30 minute chill before slicing, which makes it a little fudgier and irresistible. Store in the fridge in an airtight tin for a week, leaving individual pieces at room temperature for about 30 minutes before eating. Happy baking!