nl_tokens: This is the generator driver It s a recursive async / continuation function which calls itself until the generator terminates or throws
pl_tokens: function next ( arg , isErr ) { // Preventive measure. If we end up here, then there is really something wrong if ( ! mainTask . isRunning ) { throw <mask> Error ( 'Trying to resume an already finished generator' ) } try { let result if ( isErr ) { result = iterator . throw ( arg ) } else if ( arg === TASK_CANCEL ) { /**
            getting TASK_CANCEL automatically cancels the main task
            We can get this value here
  
            - By cancelling the parent task manually
            - By joining a Cancelled task
          **/ mainTask . isCancelled = true /**
            Cancels the current effect; this will propagate the cancellation down to any called tasks
          **/ next . cancel ( ) /**
            If this Generator has a `return` method then invokes it
            This will jump to the finally block
          **/ result = is . func ( iterator . return ) ? iterator . return ( TASK_CANCEL ) : { done : true , value : TASK_CANCEL } } else if ( arg === CHANNEL_END ) { // We get CHANNEL_END by taking from a channel that ended using `take` (and not `takem` used to trap End of channels) result = is . func ( iterator . return ) ? iterator . return ( ) : { done : true } } else { result = iterator . next ( arg ) } if ( ! result . done ) { runEffect ( result . value , parentEffectId , '' , next ) } else { /**
            This Generator has ended, terminate the main task and notify the fork queue
          **/ mainTask . isMainRunning = false mainTask . cont && mainTask . cont ( result . value ) } } catch ( error ) { if ( mainTask . isCancelled ) { logError ( error ) } mainTask . isMainRunning = false mainTask . cont ( error , true ) } }