terminateRequest method
terminateRequest is called by the client when it wants us to gracefully shut down.
It's not very obvious from the names, but terminateRequest is sent first
(a request for a graceful shutdown) and disconnectRequest second (a
request for a forced shutdown).
https://microsoft.github.io/debug-adapter-protocol/overview#debug-session-end
Implementation
@override
Future<void> terminateRequest(
Request request,
TerminateArguments? args,
void Function() sendResponse,
) async {
isTerminating = true;
await terminateImpl();
sendResponse();
await shutdown();
}