diff --git a/src/GitHub.Api/Git/Repository.cs b/src/GitHub.Api/Git/Repository.cs index 68d53af17..a28a7b679 100644 --- a/src/GitHub.Api/Git/Repository.cs +++ b/src/GitHub.Api/Git/Repository.cs @@ -85,7 +85,7 @@ public ITask SetupRemote(string remote, string remoteUrl) public ITask> Log() { if (repositoryManager == null) - return new FuncListTask(TaskHelpers.GetCompletedTask(new List())); + return new FuncListTask(new NotReadyException().ToTask>()); return repositoryManager.Log(); } @@ -123,7 +123,7 @@ public ITask Revert(string changeset) public ITask ListLocks() { if (repositoryManager == null) - return new ActionTask(TaskExtensions.CompletedTask); + return new ActionTask(new NotReadyException().ToTask()); return repositoryManager.ListLocks(false); } diff --git a/src/GitHub.Api/Helpers/TaskHelpers.cs b/src/GitHub.Api/Helpers/TaskHelpers.cs index e1c6e301e..1698b92ab 100644 --- a/src/GitHub.Api/Helpers/TaskHelpers.cs +++ b/src/GitHub.Api/Helpers/TaskHelpers.cs @@ -1,3 +1,4 @@ +using System; using System.Threading.Tasks; namespace GitHub.Unity @@ -8,5 +9,16 @@ public static Task GetCompletedTask(T result) { return TaskEx.FromResult(result); } + + public static Task ToTask(this Exception exception) + { + TaskCompletionSource completionSource = new TaskCompletionSource(); + completionSource.TrySetException(exception); + return completionSource.Task; + } + } + + public class NotReadyException : Exception + { } } \ No newline at end of file