use decorate instead explict invoke generator.next.