Why does `diff({}, {a: 4})` return an array of differences, but `diff({}, {})` return `undefined`? I would expect it to return `[]` instead. This makes iteration over the changes much easier. No check for `undefined` is needed. We also occasionally use `diff` only to _count_ the number of differences. This means code like `diff(a, b).length` will break on equal objects.