In Http1ClientSession we find the following code:
the model, as I understand it, is that sessions own transactions, so it is quite unexpected for the transaction to reach up an kill its parent. It is a very surprising side-effect of transaction_done and means that this can only be reliably used in the specific context of the calling code.
Additionally, why isn't the parent cleared in destroy()? If it must be NULL, we should have an assertion.