docs: def next(self):
          """generator function to yield multipart/form-data representation
          of parameters"""
          if self.param_iter is not None:
              try:
                  block = self.param_iter.next()
                  self.current += len(block)
                  if self.cb:
                      self.cb(self.p, self.current, self.total)
                  return block
              except StopIteration:
                  self.p = None
                  self.param_iter = None
  
          if self.i is None:
              raise StopIteration
          elif self.i >= len(self.params):
              self.param_iter = None
              self.p = None
              self.i = None
              block = "--%s--\r\n" % self.boundary
              self.current += len(block)
              if self.cb:
                  self.cb(self.p, self.current, self.total)
              return block
  
          self.p = self.params[self.i]
          self.param_iter = self.p.iter_encode(self.boundary)
          self.i += 1
          return self.next()