This is release of the block, which frees all of its memory. This invalidates any objects within the block, such as a shared_ptr<tx> that someone might copy from the block. This is an unexpected behavior that has to be managed. The block clears all of its memory upon destruct, even that owned by internally-maintained shared pointers. But that's how we avoid the large number of releases upon destruct.