src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts/AbstractDebugAdapter/processQueue
class AbstractDebugAdapter:	private async processQueue() {
		let message: DebugProtocol.ProtocolMessage | undefined;
		while (this.queue.length) {
			if (!message || this.needsTaskBoundaryBetween(this.queue[0], message)) {
				await timeout(0);
			}

			message = this.queue.shift();
			if (!message) {
				return; // may have been disposed of
			}

			switch (message.type) {
				case 'event':
					this.eventCallback?.(<DebugProtocol.Event>message);
					break;
				case 'request':
					this.requestCallback?.(<DebugProtocol.Request>message);
					break;
				case 'response': {
					const response = <DebugProtocol.Response>message;
					const clb = this.pendingRequests.get(response.request_seq);
					if (clb) {
						this.pendingRequests.delete(response.request_seq);
						clb(response);
					}
					break;
				}
			}
		}
	}