internal/worker: fix govulncheck command error handling logic

The fix follows the logic in
cmd/govulncheck_sandbox/govulncheck_sandbox.go.

Change-Id: Id53d0107159acc7378a67076b7e06957d865a507
Reviewed-on: https://go-review.googlesource.com/c/pkgsite-metrics/+/477183
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Zvonimir Pavlinovic <zpavlinovic@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/worker/govulncheck_scan.go b/internal/worker/govulncheck_scan.go
index 1092547..ea72890 100644
--- a/internal/worker/govulncheck_scan.go
+++ b/internal/worker/govulncheck_scan.go
@@ -435,8 +435,10 @@
 	govulncheckCmd := exec.Command(govulncheckPath, "-json", pattern)
 	govulncheckCmd.Dir = tempDir
 	output, err := govulncheckCmd.Output()
-	if e := (&exec.ExitError{}); !errors.As(err, &e) && e.ProcessState.ExitCode() != 3 {
-		return nil, err
+	if err != nil {
+		if e := (&exec.ExitError{}); !errors.As(err, &e) || e.ProcessState.ExitCode() != 3 {
+			return nil, err
+		}
 	}
 	stats.scanSeconds = time.Since(start).Seconds()
 	stats.scanMemory = uint64(govulncheckCmd.ProcessState.SysUsage().(*syscall.Rusage).Maxrss)