Connecting a disconnecting is single-threaded; disposing must never throw.