code: func key(m *dns.Msg, t response.Type, do bool) int {
  	// We don't store truncated responses.
  	if m.Truncated {
  		return -1
  	}
  	// Nor errors or Meta or Update
  	if t == response.OtherError || t == response.Meta || t == response.Update {
  		return -1
  	}
  
  	return int(hash(m.Question[0].Name, m.Question[0].Qtype, do))
  }
docs: // Return key under which we store the item, -1 will be returned if we don't store the
  // message.
  // Currently we do not cache Truncated, errors zone transfers or dynamic update messages.