Documentation for CanUserChatAsync says that the method only works in server scripts, however this is not entirely true. The method can be used on the client, but only if the passed userId belongs to the LocalPlayer.
Made a pull request fixing the inconsistency you described here. Feel free to edit the creator docs with any future inconsistencies you might find. I’m sure Ignis and the rest of the docs team will be more than happy to have more contributors.