The Sentry SDK for .NET sends events on a thread pool thread. If an exception is thrown in the transport, the SDK handles that internally (logs out to its diagnostic logger which you can turn on with options.Debug=true) and resumes operation by picking up the next event to send to Sentry.
You can also store events to disk which are sent once connection to Sentry is stablished again.
The SDK stores events to disk before attempting to send them if you set a path to options.CacheDirectoryPath
Worth noting the SDK will not keep the file on disk if for some reason Sentry returns 500 for example. In that case we consider that payload was bogus and we drop it. But if the connection times out, or it fails to connect to Sentry, the file stays on the disk until a new event is captured or the process restarts. There’s a feature request to send these cached events periodically even if no new events are captured.