JSObject *create(JSContext *cx, HandleObject requestInstance, RequestHandle request_handle,
                 BodyHandle body_handle, bool is_downstream) {
  JS::SetReservedSlot(requestInstance, Slots::Request, JS::Int32Value(request_handle.handle));
  JS::SetReservedSlot(requestInstance, Slots::Headers, JS::NullValue());
  JS::SetReservedSlot(requestInstance, Slots::Body, JS::Int32Value(body_handle.handle));
  JS::SetReservedSlot(requestInstance, Slots::BodyStream, JS::NullValue());
  JS::SetReservedSlot(requestInstance, Slots::HasBody, JS::FalseValue());
  JS::SetReservedSlot(requestInstance, Slots::BodyUsed, JS::FalseValue());
  JS::SetReservedSlot(requestInstance, Slots::Method, JS::StringValue(GET_atom));
  JS::SetReservedSlot(requestInstance, Slots::CacheOverride, JS::NullValue());
  JS::SetReservedSlot(requestInstance, Slots::IsDownstream, JS::BooleanValue(is_downstream));

  return requestInstance;
}
JSObject *create(JSContext *cx, HandleObject requestInstance, RequestHandle request_handle,
                 BodyHandle body_handle, bool is_downstream) {
  JS::SetReservedSlot(requestInstance, Slots::Request, JS::Int32Value(request_handle.handle));
  JS::SetReservedSlot(requestInstance, Slots::Headers, JS::NullValue());
  JS::SetReservedSlot(requestInstance, Slots::Body, JS::Int32Value(body_handle.handle));
  JS::SetReservedSlot(requestInstance, Slots::BodyStream, JS::NullValue());
  JS::SetReservedSlot(requestInstance, Slots::HasBody, JS::FalseValue());
  JS::SetReservedSlot(requestInstance, Slots::BodyUsed, JS::FalseValue());
  JS::SetReservedSlot(requestInstance, Slots::Method, JS::StringValue(GET_atom));
  JS::SetReservedSlot(requestInstance, Slots::CacheOverride, JS::NullValue());
  JS::SetReservedSlot(requestInstance, Slots::IsDownstream, JS::BooleanValue(is_downstream));

  return requestInstance;
}