Thanks, I should have thought of that. And actually, running in the main thread solved a vexing problem I was having. It looked like the screensaver was failing to launch. However I was getting a black screen instead of the default screensaver (roku logo), and no debug statements were printing, even when placed as the first line in RunScreenSaver().
So when I ran the screensaver from the main thread, I saw that in fact there's a bug in one of the functions in the sample code that comes with the SDK (libScreensaver.brs#screensaverLib_CornerLocations) and when RunScreenSaver() is called from the platform it apparently swallows all the output and fails silently. I don't know if this is a problem or a feature, but it sure had me scratching my head until I ran the screensaver from the main thread and the debugger finally started talking to me.