public async Task <DbConnection> OpenConnection() { int maxRetries = 10; int retries = maxRetries; retry: var conn = new Npgsql.NpgsqlConnection(connectionString); try { await conn.OpenAsync(); } catch (PostgresException ex) when(ex.IsTransient && retries > 0) { retries--; await conn.DisposeAsync(); await Task.Delay((maxRetries - retries) * 100); goto retry; } return(conn); }