connection_engine::~connection_engine() {
    pn_transport_unbind(ctx_->transport);
    pn_transport_free(ctx_->transport);
    pn_ptr<pn_connection_t> c(connection_.pn_object());
    connection_ = proton::connection();
    pn_connection_free(c.release());
    pn_collector_free(ctx_->collector);
}
connection_engine::~connection_engine() {
    pn_transport_unbind(unwrap(transport_));
    if (collector_.get())
        pn_collector_free(collector_.release()); // Break cycle with connection_
}