DSL pppoe-client reconnect and netwatch

I have a DSL connection to my ISP that forces reconnect every 24hrs and the ipv4 WAN address changes.
I’m updating my DNS and tunnel IPs with a script that is triggered by netwatch.
Sadly i simply can’t get it to always work like that.
I have netwatch configured to ping a known outside IP every 2 seconds with 1000ms timeout.
The reconnect itself happens almost instantly (<1s) so sometimes netwatch can’t even see the up/down change in order to execute the script.
I could set netwatch to ping every second… but that could get me banned from the server/ip i ping.
Any other solution?
If only i could set pppoe-client to wait a few seconds after disconnect to connect again, that would definitely solve it.

(I have a backup scheduler event that checks IP change ever hour just so if netwatch fails… but that’s not it either)

This is a scrip i got probably from the Mikrotik WIKI, there was also some ideas and scripts for DDNS. I run a schedule ever 5 minutes that execute this script. If ip changed it updates DNS if not does nothing. Works perfect for me, maybe it will help u?

# Define User Variables
#DNS user name
:global ddnsuser "Name"
#DNS password
:global ddnspass "123456"
#DNS web addres assigned by server 
:global ddnshost "kathuter.changeip.org"

# Define Global Variables
:global ddnsip
:global ddnslastip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }

:global ddnsinterface
:global ddnssystem ("mt-" . [/system package get system version] )

# Grab the current IP address on that interface.
:global ddnsip [ /ip address get [/ip address find interface="Uncap 3"] address ]
#  :log info $ddnsip

  :if ($ddnsip != $ddnslastip) do={
 
    :log info "DDNS: Sending UPDATE!"
    :log info [ :put [/tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] key-name=$ddnsuser key=$ddnspass ] ]
 :global ddnslastip $ddnsip

  } else={ 
# :log info "DDNS: No update required."
  }

}

# End of script