private static void Dispatch(Stream inputStream, Stream outputStream)
        {
            V8ServerProtocol protocol = new V8ServerProtocol(inputStream, outputStream);

            protocol.TRACE = trace_requests;
            protocol.TRACE_RESPONSE = trace_responses;

            IDebugSession debugSession = null;

            var r = protocol.Start((string command, dynamic args, IResponder responder) => {

                if (args == null) {
                    args = new { };
                }

                if (command == "initialize") {
                    string adapterID = Utilities.GetString(args, "adapterID");
                    if (adapterID == null) {
                        responder.SetBody(new ErrorResponseBody(new Message(1101, "initialize: property 'adapterID' is missing or empty")));
                        return;
                    }

                    debugSession = EngineFactory.CreateDebugSession(adapterID, (e) => protocol.SendEvent(e.type, e));
                    if (debugSession == null) {
                        responder.SetBody(new ErrorResponseBody(new Message(1103, "initialize: can't create debug session for adapter '{_id}'", new { _id = adapterID })));
                        return;
                    }
                }

                if (debugSession != null) {

                    try {
                        DebugResult dr = debugSession.Dispatch(command, args);
                        if (dr != null) {
                            responder.SetBody(dr.Body);

                            if (dr.Events != null) {
                                foreach (var e in dr.Events) {
                                    responder.AddEvent(e.type, e);
                                }
                            }
                        }
                    }
                    catch (Exception e) {
                        responder.SetBody(new ErrorResponseBody(new Message(1104, "error while processing request '{_request}' (exception: {_exception})", new { request = command, exception = e.Message })));
                    }

                    if (command == "disconnect") {
                        protocol.Stop();
                    }
                }

            }).Result;
        }
		public Responder(V8ServerProtocol protocol, V8Response0 response) {
			_protocol = protocol;
			_response = response;
		}