HTTP agent with nice API and clean implementation