I always thought both queue operations (shift/unshift) were somehow implementing a queue under the hood, but now is obvious in retrospect that it's not... simply due to the fact that what's actually under the hood is an ArrayList (or some V8 optimized rendition of it, perhaps).
I was watching an algorithm course, and this one surprised me. He also mentioned, many people get that wrong in coding interviews when asked to implement a queue which may involve 100's of thousands of items.