code: def _rebuffer(self):
          
          # collect a stride worth of results(result lists) or exceptions
          results = []
          exceptions = []
          for i in xrange(self.stride):
              try:
                  results.append(self.iterable.next())
                  exceptions.append(False)
              except Exception, excp:
                  results.append(excp)
                  exceptions.append(True)
          # un-roll the result lists
          res_exc = []
          for rep in xrange(self.n):
              flat_results = []
              for i in xrange(self.stride):
                  result_list, exception = results[i], exceptions[i]
                  if not exception:
                      flat_results.append(result_list[rep])
                  else:
                      flat_results.append(result_list)
              res_exc.append((flat_results, exceptions))
          # make an iterator (like repeat)
          self._repeat_buffer = iter(res_exc)
docs: (internal) refill the repeat buffer