  void completeWithStatus(Status status, ContextImpl& context) const {
    if (parent_ != nullptr) {
      auto& completion_state = context.getCompletionState(this);
      completion_state.status_ = status;
      return parent_->onComplete(status, context);
    }

    if (Status::Ok == status) {
      context.setPayload();
    }
    context.callback()->onComplete(status);
    context.cancel();
  }
  void completeWithStatus(Status status, ContextImpl& context) const {
    if (parent_ != nullptr) {
      auto& completion_state = context.getCompletionState(this);
      completion_state.status_ = status;
      return parent_->onComplete(status, context);
    }

    if (Status::Ok == status) {
      context.setPayload();
    }
    context.callback()->onComplete(status);
    context.cancel();
  }