Tighten the guarantees of chain reloading

Here's an implementation of the behaviour I longed for in #649.

Any thoughts?