diff --git a/core/commands/refs.go b/core/commands/refs.go
index 294ef9bd7..7e61eed2c 100644
--- a/core/commands/refs.go
+++ b/core/commands/refs.go
@@ -129,7 +129,10 @@ NOTE: List all references recursively by using the flag '-r'.
 
 			for _, o := range objs {
 				if _, err := rw.WriteRefs(o); err != nil {
-					out <- &RefWrapper{Err: err.Error()}
+					select {
+					case out <- &RefWrapper{Err: err.Error()}:
+					case <-ctx.Done():
+					}
 					return
 				}
 			}
@@ -169,7 +172,11 @@ Displays the hashes of all local objects.
 			defer close(out)
 
 			for k := range allKeys {
-				out <- &RefWrapper{Ref: k.String()}
+				select {
+				case out <- &RefWrapper{Ref: k.String()}:
+				case <-req.Context().Done():
+					return
+				}
 			}
 		}()
 	},