join on greenlets instead of looped sleep