The Scripting library referenced translates the HRESULT value to a string. The COM library (which is what is used for this wrapper) returns an HRESULT as stated in earlier posts (https://msdn.microsoft.com/en-us/library/windows/desktop/aa380762(v=vs.85).aspx). You can call Marshal.GetExceptionForHR and then use the Message property to get the translated system description for that HRESULT.
string errorMessage = Marshal.GetExceptionForHR(task.LastTaskResult).Message;