Hi Paul,
Thanks again for the details. We did try simulating the page in a mobile environment in the dev tools, and I have just tested it out again using the steps you gave but am still seeing the empty VAST response error. However, when I was on the live page, sometimes I was able to see a preroll served, and sometimes not. That isn't strange at all. My question would be: do you have any frequency capping measures in place? The SDK's role only goes as far as requesting and rendering the creative. The ad server will decide which creative is eligible to serve based on various factors, including the device's form factor. It can be the case that there are frequency capping constraints in place, such as geo, that influence the server's ad serving, and so it would return an empty VAST. The SDK receives this empty VAST XML, not being able to parse and interpret it, is bubbling up error code 1009, which is empty VAST response as you saw.
Using the same implementation, I would also try to test with other ad tags to see if they continue to serve successfully, or otherwise. Also talk to your technical account manager and have them look into the front end. It should not be an SDK issue since we are successfully handling the error and resuming to content.