Obviously it goes without saying that with should be avoided at almost any cost, but this isn't a question about best practices - it's a question about potentially buggy behavior in Safari's JS engine.
My question basically boils down to: Should the following code run without throwing an error?
with({}) {
let a = 1;
function foo() {
console.log(a);
}
foo();
}
In Firefox and Chrome is does, but Safari throws an error saying that the variable a cannot be found. Just confirming that this is a bug, and not the "kinda undefined/unspecified behavior" that we're warned about RE with statements.
Changing let a to var a fixes the error.