In the bowl of a stand mixer whisk dry ingredients except cacao. Add water, milk and tangzhong and knead until just combined. Cover with plastic wrap and let rest for 5 min.
Add butter and knead until smooth and elastic (about 10 minutes).
Divide dough into 1/3 and 2/3 portions.
Shape the 2/3 piece into a ball and place into a greased bowl. Cover and set aside.
Add cacao powder and espresso to the 1/3 dough portion and knead to combine. Cover and let rest until doubled in size (1h- 1h30).
Roll out plain dough into a 20x30cm rectangle. Roll out cacao dough into a 20x15cm rectangle.
Place cacao dough over one half of plain dough and fold the remaining plain dough over.
Roll out to into a 20×30 cm rectangle again. Cut dough cross wise and stack the two doughs.
Roll out to combine. Repeat the cut, stacking and rolling one more time.
Cut dough into 3 equal stripes, lengthwise.
Roll out each stripe into a rope and braid the 3 ropes together. Fold ends under so that the bread fits the pan.
Let rise for 50 min.
Preheat oven to 175C degrees, brush bread with soy milk and bake for 30-35 minutes. Let cool down into the pan for 15 min then cool completely on a rack.