goLanguageServer: use semver.parse instead of semver.coerce

Didn't spend enough time investigating why this is necessary, but this
fixes the handling of pre-releases. Noticed that it wasn't suggesting an
update for a pre-release for me (when I already had a pre-release
installed).

Change-Id: I8d4bd24a922d593eb4e214447534fccba10c4fd7
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/239984
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/src/goLanguageServer.ts b/src/goLanguageServer.ts
index ae0aee7..7e772d3 100644
--- a/src/goLanguageServer.ts
+++ b/src/goLanguageServer.ts
@@ -511,7 +511,10 @@
 
 	// If the user's version does not contain a timestamp,
 	// default to a semver comparison of the two versions.
-	const usersVersionSemver = semver.coerce(usersVersion, { includePrerelease: true, loose: true });
+	const usersVersionSemver = semver.parse(usersVersion, {
+		includePrerelease: true,
+		loose: true,
+	});
 	return semver.lt(usersVersionSemver, latestVersion) ? latestVersion : null;
 }
 
@@ -678,6 +681,7 @@
 				throwResponseError: true
 			});
 		} catch (e) {
+			console.log(`Error sending request to ${proxy}: ${e}`);
 			return null;
 		}
 		return data;
diff --git a/test/gopls/update.test.ts b/test/gopls/update.test.ts
index dbe5312..bac3aaf 100644
--- a/test/gopls/update.test.ts
+++ b/test/gopls/update.test.ts
@@ -14,7 +14,7 @@
 	test('prompt for update', async () => {
 		const tool = getTool('gopls');
 
-		const toSemver = (v: string) => semver.coerce(v, {includePrerelease: true, loose: true});
+		const toSemver = (v: string) => semver.parse(v, { includePrerelease: true, loose: true });
 
 		// Fake data stubbed functions will serve.
 		const latestVersion = toSemver('0.4.1');