So the ordering here is wrong, but I think we have a couple options at this point:

- Support a list of 3-tuples. To override the nagle default, users have to then do:

```python
HTTPConnection.default_socket_options = [(socket.IPROTO_TCP, socket.TCP_NODELAY, 0)]
```

Or they can just assign an empty list. Merging the per-connection options and defaults can be done in two ways: extend a list with defaults and then per-connection options such that the per-connection options are the last to be applied (and thus override the defaults), or we can do some acrobatics to "merge" them as if they were a dictionary (one approach might be to turn the options into a dictionary, which makes me imagine the next scenario).

- Support a dictionary with tuples for keys, e.g., `{(socket.IPROTO_TCP, socket.TCP_NODELAY): 1}`.

  This allows us to just do:

```python
HTTPConnection.default_options[(socket.IPROTO_TCP, socket.TCP_NODELAY)] = 0
```

That said, with per-connection options merging the options is easiest this way.