Close all underlying resources. Idempotent.
@override Future<void> close() async { if (_closed) return; _closed = true; await primary.close(); await secondary.close(); }