{"action":"opened","issue":{"url":"https://api.github.com/repos/haskell-servant/servant-snap/issues/3","labels_url":"https://api.github.com/repos/haskell-servant/servant-snap/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/haskell-servant/servant-snap/issues/3/comments","events_url":"https://api.github.com/repos/haskell-servant/servant-snap/issues/3/events","html_url":"https://github.com/haskell-servant/servant-snap/issues/3","id":110819213,"number":3,"title":"Rely on MonadSnap's error handling","user":{"login":"imalsogreg","id":993484,"avatar_url":"https://avatars.githubusercontent.com/u/993484?v=3","gravatar_id":"","url":"https://api.github.com/users/imalsogreg","html_url":"https://github.com/imalsogreg","followers_url":"https://api.github.com/users/imalsogreg/followers","following_url":"https://api.github.com/users/imalsogreg/following{/other_user}","gists_url":"https://api.github.com/users/imalsogreg/gists{/gist_id}","starred_url":"https://api.github.com/users/imalsogreg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/imalsogreg/subscriptions","organizations_url":"https://api.github.com/users/imalsogreg/orgs","repos_url":"https://api.github.com/users/imalsogreg/repos","events_url":"https://api.github.com/users/imalsogreg/events{/privacy}","received_events_url":"https://api.github.com/users/imalsogreg/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/haskell-servant/servant-snap/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"imalsogreg","id":993484,"avatar_url":"https://avatars.githubusercontent.com/u/993484?v=3","gravatar_id":"","url":"https://api.github.com/users/imalsogreg","html_url":"https://github.com/imalsogreg","followers_url":"https://api.github.com/users/imalsogreg/followers","following_url":"https://api.github.com/users/imalsogreg/following{/other_user}","gists_url":"https://api.github.com/users/imalsogreg/gists{/gist_id}","starred_url":"https://api.github.com/users/imalsogreg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/imalsogreg/subscriptions","organizations_url":"https://api.github.com/users/imalsogreg/orgs","repos_url":"https://api.github.com/users/imalsogreg/repos","events_url":"https://api.github.com/users/imalsogreg/events{/privacy}","received_events_url":"https://api.github.com/users/imalsogreg/received_events","type":"User","site_admin":false},"milestone":null,"comments":0,"created_at":"2015-10-10T21:58:24Z","updated_at":"2015-10-10T21:58:24Z","closed_at":null,"body":"... instead of running all handlers within EitherT ServantError. Running snap handlers under EitherT requires lots of `lift`s, we have to compose lifted Snap handlers instead of regular old Snap handlers. For example: https://github.com/CBMM/CBaaS/blob/master/src/Server/APIServer.hs#L39-L55  The placement of the function arguments with respect to the `lift` or `return` used to get into the `EitherT ServantError` transformer is confusing and fragile. Can this be avoided?"}}