Having a “primitiveLike” by itself seems like a massive problem - objects have a distinct identity, primitives do not, and while coercing between the two is possible, conflating them is highly undesirable.
Maybe the naming was inappropriate, but I think it's necessary to have the ability to determine the behavior when reassigned. I also don't think it's appropriate to hack the behavior of let, and I think it's better to have it work only with const.
Assignments are to bindings - variables - not objects, and it just doesn't make any sense to me to have the way assignment works suddenly change and become fallible.