@override Future<void> close() { final pending = _rawCloseFuture; if (pending != null) return pending; _disposed = true; final parentClose = super.close(); return _rawCloseFuture = _closeRaw(parentClose); }