Ah I found why your code was running slow. You were using setTimeout with 100ms delay. Be sure to use requestAnimationFrame for production when not debugging to get  buttery smooth performance like this:
async function getPoses() {
  if(detector){
    poses = await detector.estimatePoses(video.elt);
  
  }
       
  //console.log(poses);
  requestAnimationFrame(getPoses);
}