After reading the url object and `url.parse` specs in detail, this is probably right. It should be possible to replace the url string generation/parsing in the code and combine the `object` and url object cases.

Just have to be careful to stay backward compatible.