I was surprised to find that in Babel, I could have two modules import
each other without any issues. I have found a few places that refer to this as a known and expected behaviour in Babel. I know that this is widely considered an anti-pattern by a lot of (I'm guessing most) people, but please ignore that for this question:
Does anyone know if this is (or will be) correct behaviour in ES6/7?
The closest thing I can find to an official answer (and technical explanation) is this comment on 2ality.com
It's usually considered bad practices. But ES modules are designed to support cyclic dependencies. There are some information in ES 2017 spec 15.2.1.16.3ResolveExport Concrete Method. However, I think it's really hard to read (to be honest, I suffer a lot). The post you mentioned from 2ality.com might be better readable.