better errors, a little code deduplication

The tests are passing, but I'm not confident in these errors and `Pouch.call(opts.complete, err)` calls.