/// <summary>
 /// Asynchronously logs an error in log for the application.
 /// </summary>
 /// <param name="error">The error to log.</param>
 protected virtual Task <bool> LogErrorAsync(Error error) => Task.FromResult(LogError(error));
 /// <summary>
 /// Logs an error in log for the application.
 /// </summary>
 /// <param name="error">The error to log.</param>
 protected abstract bool LogError(Error error);