Unify all request failures under a single context aware exception; add test cases