Preheat oven to 400℉.
Boil the water and butter in a medium saucepan.
Remove from the heat and stir in the flour; let rest for 5 minutes to cool off a bit.
Add the eggs and whisk until a smooth batter is formed.
Spread the mixture into the bottom of the baking dish.
Bake for 20 minutes or until golden brown.
Let cool for at least 30 minutes.
Whisk together the sugar, cornstarch and salt in a saucepan.
Add the milk and whisk until combined.
Cook over low to medium-low heat, whisking frequently, until it reaches a boil.
Add the egg yolks to a separate mixing bowl.
Pour some of the boiling mixture into the egg yolks and whisk until well-combined.
Pour the egg mixture into the saucepan with the rest of the pudding mixture and whisk well.
Place the pan back onto the stovetop and cook on medium heat until bubbly, whisking constantly.
Once bubbling, remove from the heat and stir in the cream cheese, butter and vanilla extract until smooth.
If you notice any lumps, you can run it through a sieve.
Cover the pudding with plastic wrap and refrigerate for at least one hour.
Give the pudding a stir and pour it into the cream puff layer.
Cover with plastic wrap and refrigerate for 4-6 hours or overnight.
Spread whipped topping over the pudding and drizzle the top with chocolate syrup.
