@@ -23,7 +23,6 @@ type execution[T any] struct {
2323 capabilityResponses map [int32 ]<- chan * sdkpb.CapabilityResponse
2424 secretsResponses map [int32 ]<- chan * secretsResponse
2525 pendingCallsLimiter limits.ResourcePoolLimiter [int ]
26- pendingCallsFree map [int32 ]func ()
2726 lock sync.RWMutex
2827 module * module
2928 executor ExecutionHelper
@@ -51,9 +50,10 @@ func (e *execution[T]) callCapAsync(ctx context.Context, req *sdkpb.CapabilityRe
5150 e .lock .Lock ()
5251 defer e .lock .Unlock ()
5352 e .capabilityResponses [req .CallbackId ] = ch
54- e .pendingCallsFree [req .CallbackId ] = free
5553
5654 go func () {
55+ defer free ()
56+
5757 resp , err := e .executor .CallCapability (ctx , req )
5858
5959 if err != nil {
@@ -92,10 +92,6 @@ func (e *execution[T]) awaitCapabilities(ctx context.Context, acr *sdkpb.AwaitCa
9292 }
9393
9494 delete (e .capabilityResponses , callId )
95- if free , ok := e .pendingCallsFree [callId ]; ok {
96- free ()
97- delete (e .pendingCallsFree , callId )
98- }
9995 }
10096
10197 return & sdkpb.AwaitCapabilitiesResponse {
@@ -119,9 +115,10 @@ func (e *execution[T]) getSecretsAsync(ctx context.Context, req *sdkpb.GetSecret
119115 e .lock .Lock ()
120116 defer e .lock .Unlock ()
121117 e .secretsResponses [req .CallbackId ] = ch
122- e .pendingCallsFree [req .CallbackId ] = free
123118
124119 go func () {
120+ defer free ()
121+
125122 resp , err := e .executor .GetSecrets (ctx , req )
126123 sr := & secretsResponse {responses : resp , err : err }
127124
@@ -157,10 +154,6 @@ func (e *execution[T]) awaitSecrets(ctx context.Context, acr *sdkpb.AwaitSecrets
157154 }
158155
159156 delete (e .secretsResponses , callId )
160- if free , ok := e .pendingCallsFree [callId ]; ok {
161- free ()
162- delete (e .pendingCallsFree , callId )
163- }
164157 }
165158
166159 return & sdkpb.AwaitSecretsResponse {
0 commit comments