01db38c8989c74391e76b3ec36da8e13fbd4a409

I added tests for one side empty, both sides empty, joined on values are different types, one is string 'null' and one is null, and one is string 'undefined' and one is undefined.

I don't think we want to support "a joined on value is a nested object" - we should probably throw an error if the join key isn't always a primitive value. JSON.stringify doesn't stringify in a set order, so you could get something like `JSON.stringify({x: 5, y: 6}); // '{"x":5,"y":6}' or '{"y":6,"x":5}'`

What do you mean by "an item in an array isn't an object"? That one of the items in the stream isn't an object?  That's also something that we should definitely throw an error for that we don't currently.