feat(request): support canceling