This happens:

That is:
```
if( dur.match(/:/) ) {
let xs = dur.split(":")
if( xs.length > 3 ) return nan()
if( xs.length == 3 ) {
let [ h, m, s ] = xs
h = parseInt(h)
m = parseInt(m)
s = parseFloat(s)
if( isNaN(h) || isNaN(m) || isNaN(s) ) return nan()
dur = s + 60 * m + 3600 * h
} else if( xs.length == 2 ) {
let [ m, s ] = xs
m = parseInt(m)
s = parseFloat(s)
if( isNaN(m) || isNaN(s) ) return nan()
dur = s + 60 * m
} else {
return nan()
}
} else {
dur = parseFloat(dur)
if( isNaN(dur) ) return nan()
}
```
where there are two extra right shifts after an open brace. I suspect that three different autoindent facilities are trying to indent, and are adding to each other.