OK so I have managed to get to find where the issue is, but not the absolute root cause in this scenario.
in monitorStack it's setting the monitoredSince time to now -5 seconds. So it only checks events after it started monitoring. The problem I'm seeing on the drone server is that the event times being reported are always before monitoredSince. Sometimes up to 60-80 seconds. So it's never detecting that the updates have completed or failed.
I've checked the time on my drone server and it's correct and synced to internet. My drone server is an EC2 instance in AWS, so it would probably have very quick response time to instigating the CF update. Not sure why there is such a delay between kicking off the cloudformation update and starting the monitoring task. I've modified it to -120 seconds and it's all working ok.
Not really sure on the best way to fix it, maybe the monitor task should be passed the time from updatestack function from before updatestack function called AWS update. Rather than the monitorStack trying to guess the start time. I think that would be the most robust solution.
I'll just raise an issue in the github repo and see if I can find some time to submit a PR.