/// <summary>
        /// Logs this error to a specific store.
        /// </summary>
        /// <param name="store">The store to log to, if null the default is used.</param>
        /// <returns>The error if logged, or null if logging was aborted.</returns>
        public async Task <bool> LogToStoreAsync(ErrorStore store = null)
        {
            store = store ?? Settings.DefaultStore;
            var abort = Settings.BeforeLog(this, store);

            if (abort)
            {
                return(true);           // if we've been told to abort, then abort dammit!
            }
            Trace.WriteLine(Exception); // always echo the error to trace for local debugging
            await store.LogAsync(this).ConfigureAwait(false);

            Settings.AfterLog(this, store);

            return(true);
        }