public ITask UpdateGitAheadBehindStatus()
        {
            ConfigBranch?configBranch;
            ConfigRemote?configRemote;

            GetCurrentBranchAndRemote(out configBranch, out configRemote);

            var updateTask = new ActionTask <GitAheadBehindStatus>(token, (success, status) =>
            {
                if (success)
                {
                    GitAheadBehindStatusUpdated?.Invoke(status);
                }
            });

            if (configBranch.HasValue && configBranch.Value.Remote.HasValue)
            {
                var name         = configBranch.Value.Name;
                var trackingName = configBranch.Value.IsTracking ? configBranch.Value.Remote.Value.Name + "/" + configBranch.Value.TrackingBranch : "[None]";

                var task = GitClient.AheadBehindStatus(name, trackingName)
                           .Then(updateTask);
                return(HookupHandlers(task, false));
            }
            else
            {
                updateTask.PreviousResult = GitAheadBehindStatus.Default;
                return(updateTask);
            }
        }