public void Save(Debug debugResult, bool async)
        {
            Action<Debug> action = (debug) => {
                using (var profilerDataContext = new ProfilerDbDataContext())
                {
                    var transactionId = Guid.Empty;
                    Guid.TryParse(debug.TransactionId, out transactionId);

                    profilerDataContext.InsertProfilerDebug(Guid.Parse(debug.Id), debug.Name, debug.Method,
                        debug.RequestUrl, debug.MachineName, debug.UserName, debug.StartedUtc,
                        transactionId, debug.Code, debug.Level);

                    if (debug.Head != null)
                    {
                        var timing = debug.Head;
                        InsertTimings(profilerDataContext, transactionId, timing);
                    }
                }
            };

            if (RequiredToSave() == true)
            {
                if (async)
                    action.BeginInvoke(debugResult, null, null);
                else
                    action.Invoke(debugResult);
            }
        }