should pass in the request too and handle NOT_DONE_YET