function Timeout(reflex, reject){
this.interval = this.interval || arguments[3] ?? 5000
var pace = setInterval(reflex,this.interval)
if ('maximum' in this) setTimeout(()=>{
clearInterval(pace)
reject(`${this.constructor.name} reached`)
}, Math.max(this.maximum, this.interval * this.cap))
}
Timeout.seed = function(retry,flex,off){try{off = off ?? (msg)=>{throw Timeout.except ? new Timeout.except(msg) : msg}
this.prototype.interval = flex
return new Timeout(retry,off)
}catch(flex){return off(flex)}finally{
this.prototype.interval = 0
}}