code: func httpUnquote(raw string) (eaten int, result string) {
  	buf := make([]byte, len(raw))
  	if raw[0] != '"' {
  		return -1, ""
  	}
  	eaten = 1
  	j := 0 // # of bytes written in buf
  	for i := 1; i < len(raw); i++ {
  		switch b := raw[i]; b {
  		case '"':
  			eaten++
  			buf = buf[0:j]
  			return i + 1, string(buf)
  		case '\\':
  			if len(raw) < i+2 {
  				return -1, ""
  			}
  			buf[j] = httpUnquotePair(raw[i+1])
  			eaten += 2
  			j++
  			i++
  		default:
  			if isQdText(b) {
  				buf[j] = b
  			} else {
  				buf[j] = '?'
  			}
  			eaten++
  			j++
  		}
  	}
  	return -1, ""
  }
docs: // raw must begin with a valid quoted string. Only the first quoted string is
  // parsed and is unquoted in result. eaten is the number of bytes parsed, or -1
  // upon failure.