Preheat your oven to 400 degrees, and line a large baking sheet with a nonstick mat or parchment paper. Set aside.
In a medium bowl, stir together the flour, sugar, and salt. Set aside.
In a medium saucepan, melt the butter over medium heat, and then add in the water and vanilla extract. Bring the mixture to a boil, and remove from heat. Immediately stir in the flour mixture, using a wooden spoon or spatula to fully incorporate. Cool for about 10 minutes.
Using a hand mixer, a stand mixer, or just a spatula, work in the eggs one at a time. This will take a few minutes, and you want to fully incorporate each egg before adding the next. The dough should be sticky and very stretchy.
Transfer to a piping bag with a large tube tip on it (I use the Ateco 808 tip), and pipe the puffs onto your prepared baking sheet, about 3 tablespoons of dough per puff. You'll end up with some pointy tops or edges no matter how you pipe them. Wet your fingers with water to press down any pointy edges and further shape the puffs if needed.
Bake for 25-30 minutes, or until the puffs are puffed and the dough looks completely dry. Cool completely before filling.
In a large bowl, beat together the pudding mix, milk, and heavy cream until the mixture is thick and slightly fluffy. This takes about 5 minutes for me with a hand mixer. Chill until ready to fill puffs.
Transfer to a piping bag fitted with a small round tip, and poke into cooled puffs to fill. Alternatively, slice the puffs in half and spoon the filling in. You will have leftover filling- it's great on it's own.
Heat the heavy cream, vanilla, and salt in the microwave until boiling. Add in the chocolate chips, and whisk until smooth. Pour over the filled puffs, and allow to chill until ready to serve. Enjoy!