Btw. I noticed this subtle bug.

`put()` adds the bindings to the _ENGINE_ scope which is shared between several invocations against the same instance. As we re-use engines, there was a slight chance that an invocation "saw" the object from another parallel one in case a context switch occured between the `put()` and the `eval()` call. This should be fixed now by passing the bindings to `eval()` itself.