Since JS lacks a static type system, isn't it a bit misleading to call these "algebraic" effects, when algebraic is referring to the type system? I'm still not clear where the "algebraic" part comes in here.
Algebra lacks a static type system, too. If among the numbers we recognize types such as "integer", "rational", "real", "complex", we need dynamic typing, because the value of any polynomial fraction P(z)/Q(z) for any given z can be any of these types, depending nontrivially on the value of z and all the coefficients.