Update: So I replicated your code and made a more minimal version of it which you can view here:

The reason it was predicting zero poses is because the video width and height had not been set which BlazePose was using to determine width and heght. Adding these 2 lines once you know the final size of video (after load) will fix issue:
  video.width = video.videoWidth;
  video.height = video.videoHeight;

As you can see with my code above this now works as intended.
Also please make sure you use requestAnimationFrame like I have not setTimeout as you will run into issues on older devices that are slower that can not go as fast as you think. By using requestAnimationFrame it lets the browser decide when it has enough resources to process next frame instead which is industry best practice.
Happy hacking and I look forward to seeing your final TensorFlow.js creation. Do tag us on social using the #MadeWithTFJS hashtag so we can find what you create and share with the wider community!