Browse code

client: ImagePullResponse: use sync.OnceValue

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2025/10/10 17:31:36
Showing 2 changed files
... ...
@@ -16,15 +16,18 @@ import (
16 16
 )
17 17
 
18 18
 func newImagePullResponse(rc io.ReadCloser) ImagePullResponse {
19
+	if rc == nil {
20
+		panic("nil io.ReadCloser")
21
+	}
19 22
 	return ImagePullResponse{
20 23
 		rc:    rc,
21
-		close: &sync.Once{},
24
+		close: sync.OnceValue(rc.Close),
22 25
 	}
23 26
 }
24 27
 
25 28
 type ImagePullResponse struct {
26 29
 	rc    io.ReadCloser
27
-	close *sync.Once
30
+	close func() error
28 31
 }
29 32
 
30 33
 // Read implements io.ReadCloser
... ...
@@ -37,13 +40,7 @@ func (r ImagePullResponse) Close() error {
37 37
 	if r.close == nil {
38 38
 		return nil
39 39
 	}
40
-	var err error
41
-	r.close.Do(func() {
42
-		if r.rc != nil {
43
-			err = r.rc.Close()
44
-		}
45
-	})
46
-	return err
40
+	return r.close()
47 41
 }
48 42
 
49 43
 // JSONMessages decodes the response stream as a sequence of JSONMessages.
... ...
@@ -16,15 +16,18 @@ import (
16 16
 )
17 17
 
18 18
 func newImagePullResponse(rc io.ReadCloser) ImagePullResponse {
19
+	if rc == nil {
20
+		panic("nil io.ReadCloser")
21
+	}
19 22
 	return ImagePullResponse{
20 23
 		rc:    rc,
21
-		close: &sync.Once{},
24
+		close: sync.OnceValue(rc.Close),
22 25
 	}
23 26
 }
24 27
 
25 28
 type ImagePullResponse struct {
26 29
 	rc    io.ReadCloser
27
-	close *sync.Once
30
+	close func() error
28 31
 }
29 32
 
30 33
 // Read implements io.ReadCloser
... ...
@@ -37,13 +40,7 @@ func (r ImagePullResponse) Close() error {
37 37
 	if r.close == nil {
38 38
 		return nil
39 39
 	}
40
-	var err error
41
-	r.close.Do(func() {
42
-		if r.rc != nil {
43
-			err = r.rc.Close()
44
-		}
45
-	})
46
-	return err
40
+	return r.close()
47 41
 }
48 42
 
49 43
 // JSONMessages decodes the response stream as a sequence of JSONMessages.