code: func NewOnAddresses(dialer httpstream.Dialer, addresses []string, ports []string, stopChan <-chan struct{}, readyChan chan struct{}, out, errOut io.Writer) (*PortForwarder, error) {
  	if len(addresses) == 0 {
  		return nil, errors.New("You must specify at least 1 address")
  	}
  	parsedAddresses, err := parseAddresses(addresses)
  	if err != nil {
  		return nil, err
  	}
  	if len(ports) == 0 {
  		return nil, errors.New("You must specify at least 1 port")
  	}
  	parsedPorts, err := parsePorts(ports)
  	if err != nil {
  		return nil, err
  	}
  	return &PortForwarder{
  		dialer:    dialer,
  		addresses: parsedAddresses,
  		ports:     parsedPorts,
  		stopChan:  stopChan,
  		Ready:     readyChan,
  		out:       out,
  		errOut:    errOut,
  	}, nil
  }
docs: // NewOnAddresses creates a new PortForwarder with custom listen addresses.