ok, I think you misunderstood me. I'm saying to do something like:
```
if (status < 0) {
  delete[] buf;
  throw;
}
```

throwing is definitely correct, but we need to clean up before we throw.