diff --git a/conn_process.go b/conn_process.go index db600a7bb1..cf804aeb1a 100644 --- a/conn_process.go +++ b/conn_process.go @@ -116,6 +116,11 @@ func (c *connect) process(ctx context.Context, on *onProcess) error { select { case <-ctx.Done(): c.cancel() + // Wait for goroutine to finish before returning + select { + case <-errCh: + case <-doneCh: + } return ctx.Err() case err := <-errCh: