Where I started with this was that for validation I assumed that unless the validation routine was actually broken, the whole point was to return whether or not the extension was valid. I carried that over into installation because installation validates first.

I do think you're right that the Node convention is generally to pass `(err, null)` for anything that goes wrong.

I did see one page about errors that talked about doing this:

```javascript
var err = new Error("message");
err.data = {more: "stuff"};
```

It would certainly be more pleasant to have a constructor that can take additional data. And I do think that ConnectionManager should know what to do if the callback is given an error, since that's so common. (As some point, we should have a domain (in Node terms) to capture the errors and carry them up to the UI.)

I don't know how much work there would be in ConnectionManager, but I do think it's a good idea to stick to the node convention where possible.

Do you think validation should return (err, null) if the extension is invalid and (null, metadata) if it's valid?