anchor.diff:  
               [Dlr.tryFinally catchBlock restoreSharedScope] $ Seq.ofList
             )
  -          
  +
           Dlr.catchVar caughtExn catchBlock
   
       | _ -> failwith "Que?"
  
positive.code:         ctx.CatchScopes := xs
  
          // The .NET/DLR exception parameter
          let caughtExn = 
            Dlr.paramT<UserError> "~exn"
  
          // The shared variable that we should
          // inject into the ActiveVariables map
  
negative.code:                 // 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 (jsErr .-> "Value")
  
                  // Compile the javascript catch block
                  ctx $ compile ast $ Dlr.castVoid
  