I think the problem you've encountered is that supportedLocalesOf() only checks the language, not the locale (in other words, the very beginning of the 'language tag'). And the date formatting functions will silently fall back on 'en-us' if you specify another English language locale that is not supported (as opposed to throwing an exception if you specify a different language). These two oddities of the API (to put it gently imo) together make it possible to unknowingly feed the user dates that look correct but are wrong.
It is now years after this question was asked (I started answering before I noticed - whoops) and support for locale data in the browsers is now pretty good, but changes in the locale data will probably always be happening.
For Node though, support is still quite poor - this bit me recently and I think it will bite others. Until v13, the official builds of Node only included support for 'en-US' (see the 'build' bullet point in the v13 changelog).
And it is important to note that the inclusion of the locales support is build dependent, so while it is included as of v13 in the official Node builds, the locales data is actually quite large so others (eg. FaaS offerings like Lambda or Firebase Functions) might make different decisions about the trade-off. Therefore it is, as usual, better to test using this function rather than checking your Node version.