So you're okay with having an ordering like so:

```python
sock_opts = []
sock_opts.extend(self.default_socket_options)
sock_opts.extend(self.socket_options)

for opt in sock_opts:
    conn.setsockopt(*opt)
```

I mean in that order you could theoretically have the following:

```python
# Class defaults
self.default_socket_options = [(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)]
# Per-connection settings
self.socket_options = [(socket.IPPROTO_TCP socket.TCP_NODELAY, 0)]
```

So the for loop would wind up doing the following:

```pycon
>>> s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
>>> s.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY)
4
>>> s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 0)
>>> s.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY)
0
```

Which as far as I can tell would enable Nagle's algorithm in the end. So even if we set the same socket option twice, I don't think it'll be too terrible.

Does this seem reasonable?