add greenlet error handles