code: func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
  	fqdn, _ := dns01.GetRecord(domain, keyAuth)
  
  	// acquire lock and retrieve zoneID, newZoneID and authZone
  	d.inProgressMu.Lock()
  	defer d.inProgressMu.Unlock()
  
  	if _, ok := d.inProgressFQDNs[fqdn]; !ok {
  		// if there is no cleanup information then just return
  		return nil
  	}
  
  	zoneID := d.inProgressFQDNs[fqdn].zoneID
  	newZoneID := d.inProgressFQDNs[fqdn].newZoneID
  	authZone := d.inProgressFQDNs[fqdn].authZone
  	delete(d.inProgressFQDNs, fqdn)
  	delete(d.inProgressAuthZones, authZone)
  
  	// perform API actions to restore old gandi zone for authZone
  	err := d.setZone(authZone, zoneID)
  	if err != nil {
  		return fmt.Errorf("gandi: %v", err)
  	}
  
  	return d.deleteZone(newZoneID)
  }
docs: // CleanUp removes the TXT record matching the specified
  // parameters. It does this by restoring the old Gandi DNS zone and
  // removing the temporary one created by Present.