test/integration/goDebug: wait for debug adapter dispose in teardown test

Change-Id: I95dfbc894f1613c9c5f756b27db8a13ffb349059
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/318891
Trust: Hyang-Ah Hana Kim <hyangah@gmail.com>
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Suzy Mueller <suzmue@golang.org>
diff --git a/src/goDebugFactory.ts b/src/goDebugFactory.ts
index 9417165..d8e1ed5 100644
--- a/src/goDebugFactory.ts
+++ b/src/goDebugFactory.ts
@@ -212,7 +212,7 @@
 			return;
 		}
 
-		if (timeoutMS === undefined) {
+		if (timeoutMS === undefined || timeoutMS < 0) {
 			timeoutMS = 1_000;
 		}
 		const dlvDapServer = this.dlvDapServer;
@@ -230,7 +230,6 @@
 			const exitTimeoutToken = setTimeout(() => {
 				this.logger?.error(`dlv dap process (${dlvDapServer.pid}) isn't responding. Killing...`);
 				dlvDapServer.kill('SIGINT'); // Don't use treekill but let dlv handle cleaning up the child processes.
-				resolve();
 			}, timeoutMS);
 			dlvDapServer.on('exit', (code, signal) => {
 				clearTimeout(exitTimeoutToken);
diff --git a/test/integration/goDebug.test.ts b/test/integration/goDebug.test.ts
index 9792d81..04bbd9f 100644
--- a/test/integration/goDebug.test.ts
+++ b/test/integration/goDebug.test.ts
@@ -1598,7 +1598,7 @@
 
 			// Skip the proper disconnect sequence started with a disconnect request.
 
-			dlvDapAdapter.dispose(1);
+			await dlvDapAdapter.dispose(1);
 			dc = undefined;
 			await sleep(100); // allow dlv to respond and finish cleanup.
 			let stat: fs.Stats = null;