We have `#request` and `#execute_request` which have similar names but different purposes. This seems like it needs a larger refactor so that `#request` does just that and we don't have to split the behavior between two mutually recursive functions.