io.connect(url) takes relative paths and Location objects.

Also, passed options objects are not mutated in-place.

And more modern parseurl code is used (the 'strict' codepath).