src/goLanguageServer.ts: fix broken event forwarding in middleware

Middleware must forward the intercepted event to the next handler.
Also, fixes the type error occurring when intercepting the codelens
response - it can be undefined or null.

Change-Id: I59aca7b63503cdb23da11670cfd5fa33ec06014c
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/245540
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
diff --git a/src/goLanguageServer.ts b/src/goLanguageServer.ts
index ff63aab..b1d783e 100644
--- a/src/goLanguageServer.ts
+++ b/src/goLanguageServer.ts
@@ -260,6 +260,9 @@
 			middleware: {
 				provideCodeLenses: async (doc, token, next): Promise<vscode.CodeLens[]> => {
 					const codeLens = await next(doc, token);
+					if (!codeLens || codeLens.length === 0) {
+						return codeLens;
+					}
 					return codeLens.map((lens: vscode.CodeLens) => {
 						switch (lens.command.title) {
 							case 'run test': {
@@ -365,17 +368,21 @@
 				},
 				// Keep track of the last file change in order to not prompt
 				// user if they are actively working.
-				didOpen: () => {
+				didOpen: (e, next) => {
 					lastUserAction = new Date();
+					next(e);
 				},
-				didChange: () => {
+				didChange: (e, next) => {
 					lastUserAction = new Date();
+					next(e);
 				},
-				didClose: () => {
+				didClose: (e, next) => {
 					lastUserAction = new Date();
+					next(e);
 				},
-				didSave: () => {
+				didSave: (e, next) => {
 					lastUserAction = new Date();
+					next(e);
 				},
 			}
 		}