introduce Promise#future_response to reuse codes