             returnedContext.returned = receiver
             returnedContext.unparsedMessage = returnedMessage
             return [returnedContext, returnedMessage]
-
-
-          # where we detect an exception being thrown
-          if theContext.throwing
-            console.log "throw escape 2"
-            restOfMessage.exhaust()
-
-            if theContext.returned.flClass == FLReturn
-              console.log "got a return!"
-              theContext.throwing =false
-              if theContext.returned.value?
-                console.log "got a return with value!"
-                theContext.returned = theContext.returned.value
-              else
-                theContext.returned = FLNil.createNew()
-            else
-              theContext.throwing = true
-
-            return [theContext, restOfMessage]
 
 
           console.log "2 theContext.throwing: " + theContext.throwing

      [returnedContext, returnedMessage] = @partialEvalAsMessage theContext
      if !returnedMessage.isEmpty()
        console.log "list couldn't be fully evaluated: " + @flToString() + " unexecutable: " + returnedMessage.flToString()
        returnedContext.returned = FLException.createNew "message was not understood: " + returnedMessage.flToString()
        returnedContext.throwing = true
      return [returnedContext, returnedMessage]

    # this eval doesn't require that the whole list is consumed,

            console.log "3 returnedContext.throwing: " + returnedContext.throwing

          # where we detect an exception being thrown
          if theContext.throwing or returnedContext.throwing
            console.log "throw escape"
            theContext.returned = receiver
            restOfMessage.exhaust()
