Preheat the oven to 350 degrees. Lightly grease a 9x13 inch pan.
STREUSEL TOPPING: Make the topping by whisking together the sugar, salt, flour, and cinnamon. Add the melted butter, stirring until well combined, set topping aside.
FILLING: Make the filling by mixing together the brown sugar, cinnamon, and cocoa powder, set filling aside.
CAKE: Make the cake in a large bowl, by beating together the butter, salt, sugars, baking powder, and vanilla until well combined and smooth. Add the eggs one at a time, beating well after each addition. In a separate bowl, whisk together the sour cream and milk until well combined. You don't need to whisk out all the lumps. Add the flour to the butter mixture alternately with the milk/sour cream mixture, beating gently to combine.
Pour/spread half the batter into the prepared pan, spreading all the way to the edges. Sprinkle the filling evenly on top of the batter. Spread the remaining batter on top of the filling. Use a table knife to gently swirl the filling into the batter, as though you were making a marble cake. Don't combine filling and batter, just swirl the filling through the batter. Sprinkle the topping over the batter.
Bake the cake about 50 to 55 minutes or until it's a dark golden brown around the edges and a toothpick inserted into the center comes out clean, also when pressed gently in the middle, the cake should spring back. Remove the cake from the oven and allow it to cool for 20 minutes before cutting and serving. Serve cake right from the pan.