add completion_condition.hpp and move transfer_response_body into it