Yes, adding both seems to be a good idea.

To me, thinking a bit about it, the “expected“ behaviour of `sendLazy` would be that of `Network.ByteString.Lazy.sendAll` which is implemented by repeatedly calling `Network.ByteString.Lazy.send`, which happens to be implemented using vectored IO.

So maybe we just just provide the following (running in `MonadIO`):

```haskell
sendMany = Network.Socket.ByteString.sendMany
sendLazy = Network.Socket.ByteString.Lazy.sendAll
```