monadic choice combinators
pack away the inner error logic

A Monad? In my Monad? -- Yeah, I know...
clean
ignore empty application data
unbreak lwt
unbreak mirage
extend mirage-client