code: func (d *ulReqDecoder) decodeFirstWant() stateFn {
  	if ok := d.nextLine(); !ok {
  		return nil
  	}
  
  	if !bytes.HasPrefix(d.line, want) {
  		d.error("missing 'want ' prefix")
  		return nil
  	}
  	d.line = bytes.TrimPrefix(d.line, want)
  
  	hash, ok := d.readHash()
  	if !ok {
  		return nil
  	}
  	d.data.Wants = append(d.data.Wants, hash)
  
  	return d.decodeCaps
  }
docs: // Expected format: want <hash>[ capabilities]