Main points
Due to how JS handles polymorphism and arithmetic with null/undefined values frame geometry check is inconsistent.
For example, this returns a frame:
new Frame([null, 4], [1, 20])
but this returns an error:
new Frame([1, 4], [null, 20])
We should either insist that points contain no null/undefined values or allow these frames to be created.