You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: example_d.rs
    path of file: ./repos/seed/examples/server_integration/client/src
    
    the code of the file until where you have to start completion: use gloo_net::http::Request;
use gloo_timers::callback::Timeout;
use seed::{prelude::*, *};
use std::{cell::RefCell, rc::Rc};

pub const TITLE: &str = "Example D";
pub const DESCRIPTION: &str =
    "Click button 'Send request` to send request to endpoint with configurable delay.
    Click again to disable timeout - otherwise the request will time out.";

const TIMEOUT: u32 = 2000;

type FetchResult<T> = Result<T, gloo_net::Error>;

fn get_request_url() -> String {
    let response_delay_ms: u32 = 2500;
    format!("/api/delayed-response/{response_delay_ms}")
}

// ------ ------
//     Model
// ------ ---
    
pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders<Msg>) {
    match msg {
        Msg::SendRequest => {
            let abort_signal = model.abort_controller.signal();
            let request = Request::get(&get_request_url()).abort_signal(Some(&abort_signal));
            let abort_controller = Rc::clone(&model.abort_controller);
            model.timeout_handle.replace(Some(
                // abort request on timeout
                Timeout::new(TIMEOUT, move || abort_controller.abort()),
            ));

            model.status = Status::WaitingForResponse(TimeoutStatus::Enabled);
            model.fetch_result = None;

            orders.perform_cmd(async {
                Msg::Fetched(async { request.send().await?.text().await }.await)
            });
        }

        Msg::DisableTimeout => {
            // Cancel timeout by dropping it.
            if model.timeout_handle.replace(None).is_none() {
                // timeout already disabled
            }
            model.status = Status::WaitingForResponse(TimeoutStatus::Disabled);
        }

        Msg::Fetched(fetch_result) => {
            model.status = Status::ReadyToSendRequest;
            model.fetch_result = Some(fetch_result);
        }
    }
}