anchor.diff:                  // Replace the old top shared scope with the new one
                   ctx.Parameters.SharedScope .= tmpScope
   
  +                jsErr .= Dlr.castAsT<UserError> (Dlr.callInstanceMethod caughtExn (typeof<Exception>.GetMethod("GetBaseException")) Seq.empty)
  +
  +                (Dlr.if'
  +                    (Dlr.isNull jsErr)
  +                    (Dlr.throwValue caughtExn)
  +                )
  +
                   // Copy the javascript exception value into the variable
  -                Identifier.setValue ctx name (caughtExn .-> "Value")
  +                Identifier.setValue ctx name (jsErr .-> "Value")
   
                   // Compile the javascript catch block
                   ctx $ compile ast $ Dlr.castVoid
  
positive.code: 
              [Dlr.tryFinally catchBlock restoreSharedScope] $ Seq.ofList
            )
            
          Dlr.catchVar caughtExn catchBlock
  
      | _ -> failwith "Que?"
  
negative.code:         ctx.CatchScopes := xs
  
          // The .NET/DLR exception parameter
          let caughtExn =
            Dlr.paramT<Exception> "~exn"
  
          let jsErr =
            Dlr.varT<UserError> "~err"
  
          // The shared variable that we should
          // inject into the ActiveVariables map
  