javascript-mode is an alias for js-mode, and some third-party modes (e.g. json-mode) derive from it.

(provided-mode-derived-p 'js-mode 'prog-mode) == t

but

(provided-mode-derived-p 'javascript-mode 'prog-mode) == nil

Hence in json-mode, (derived-mode-p 'prog-mode) evaluates to nil, which seems unfortunate.

--
https://rrt.sc3d.org