Open 1 can sweetened condensed milk and pour the contents into a large bowl. Reserve.
Using the same can as measure, put 1 can whole milk , 1 can heavy cream and water (half of each) in a medium saucepan. I eyeball the water and cream in the same can until it fills up.
Cook over medium heat, bring it to the point where it's about to boil, and immediately turn the heat off.
Put 3.5 ounces semisweet chocolate, chopped, 2 tablespoons unsweetened cocoa powder, 1 teaspoon vanilla extract and a pinch of salt in a medium bowl, add the hot milk mixture and let stand for 1 minute to soften the chocolate. Whisk well until no flecks of chocolate remain, and let everything cool down until it is warm, about ½ hour. We need to add it to the eggs, and they might curdle if it's too hot.
Preheat oven to 300º F (150º C).
Have ready hot or boiling water for the water bath.
Add the lukewarm chocolate mixture into the condensed milk and mix until well incorporated.
Whisk 4 eggs to blend in a large bowl. Gradually add the chocolate mixture into the eggs and mix thoroughly until smooth.
Place the flan pan (careful it might be hot from the caramel) in a larger one with 2 inch sides that will go into the oven. Pour the custard into the flan pan. Do this close to the oven for easier handling when the pan is full.
Fill the larger pan with very hot or boiling water until it reaches halfway up the flan pan.
Bake for about 40 minutes, until the edges are set and the center is still quite jiggly. The time will vary depending on the pan's height and the oven.
Turn the oven off and let cool down until warm in the oven.
Remove from the water bath, transfer to a wire rack and let the flan cool completely.
Refrigerate the pan until cold, about 4 hours, well covered with plastic wrap. I do it from one day to the next. At this point, you can leave the flan in the pan for 3 days in the fridge before removing.
When you're ready to serve, put the pan directly on a low flame or electric burner and move it around to loosen the caramel. Shake the pan clockwise and counter-clockwise carefully until you feel the bottom is loose and the whole flan is moving.
Invert onto a serving plate that is large enough to hold the dessert. It's better if it has some sort of edge to keep the caramel inside.
Heat the caramel stuck in the bottom of the pan over the burner and use it as an extra sauce to serve. You can add a few tablespoons of water to make it thinner.
Serve cold with whipped cream and chocolate shavings or fresh fruit. Or eat plain, it's also amazing.