purely functional http client