move while loop into greenlet so exceptions propogated to hub loop don't break it