maybe this into `lib/adapters` or similar. so we can start to build out a place for error handling abstractions