Improve error handling

Makes request semantics optional, and better (covers all the cases that our best current use case does).