public TResponseInfo Request(string url, TimeSpan?duration = null, object variables = null, Func <string, WebClient, string> requestAction = null) { if (_disposed) { throw new ObjectDisposedException("Visit has ended"); } var request = Visit.AddRequest(VisitorContext.TransformUrl(url, Visit), duration, GetAndResetPause()); if (variables != null) { foreach (var kv in (variables as IDictionary <string, object>) ?? new RouteValueDictionary(variables)) { request.Variables.Add(kv.Key, kv.Value); } } return(Execute(request, requestAction)); }