code: def pull(self):
          
          if not 'client' in session or session['client'].dead:
              client = Client(str(request.environ['pylons.routes_dict']['id']))
              print 'Adding new client:', client
              session['client'] = client
              session.save()
              yield request.environ['cogen.core'].events.AddCoro(client.watch, prio=priority.CORO)
              return
          else:
              client = session['client']
  
          yield request.environ['cogen.call'](client.messages.get)(timeout=10)
  
          if isinstance(request.environ['cogen.wsgi'].result, events.OperationTimeout):
              pass
          elif isinstance(request.environ['cogen.wsgi'].result, Exception):
              import traceback
              traceback.print_exception(*request.environ['cogen.wsgi'].exception)
          else:
              yield "%s\r\n"% '\r\n'.join(request.environ['cogen.wsgi'].result)
docs: This action does some state checking (adds a object in the session
          that will identify this chat participant and adds a coroutine to manage
          it's state) and gets new messages or bail out in 10 seconds if there are
          no messages.