Yes, I think `p.canonical()` can go inside `link()`. It would reduce the public method surface of DefaultPromise.