It’s not adding negative indexes, a negative number will index from the end.
So [0, 1, 2, 3].at(-2) === 2
So [0, 1, 2, 3].at(-2) === 2
I don't like that very much.
Mind you, I don't like the idea of using [0,1,2,3].at(-0) either...
Or, if it’s more intuitive, you can think of the array index as an unsigned integer where the max is equal to the length of the array. If you try to assign -1 to a uint8, the result will be 255 — the highest possible value (the last index).