A URI is semantically different from a URL. Using URIs in the API would allow callers to invoke them on arbitrary schemes like "mailto", "news" and others. At the very least we should document that callers *should* pass in valid URLs and then let implementers enforce the requirements.