private async Task RunInvokeItem(InvokeContext context, int index)
        {
            var item = context.InvokeItems[index];

            context.LogTraceInfo("Start invoke: " + item.Request.Method + " " + item.Request.Url);

            Engine engine = null;

            if (!string.IsNullOrEmpty(item.Script))
            {
                engine = new Engine();
                engine.SetValue("_context", context);
                engine.SetValue("_index", index);
                engine.SetValue("logger", new JSLogger(context));
                engine.Execute("function preprocess(context, index, item) { }\r\n function postprocess(context, index, item) { }");
                engine.Execute(item.Script);
                engine.Execute("preprocess(_context, _index, _context.InvokeItems[_index]);");
            }

            await SendInvoke(context, item);

            if (!string.IsNullOrEmpty(item.Script))
            {
                engine.Execute("postprocess(_context, _index, _context.InvokeItems[_index]);");
            }

            context.LogTraceInfo("End invoke: " + item.Response.StatusCode + " " + item.Request.Method + " " + item.Request.Url);
        }
 public void Info(string s)
 {
     _context.LogTraceInfo(s);
 }