Documentation
#![feature(iterator_try_collect)]

pub mod console;
pub mod dom;
pub mod iter;
pub mod location;
pub mod prelude;
pub mod timer;
pub mod value;

pub use prelude::*;

use wasm_bindgen::prelude::*;
use wasm_bindgen_futures::JsFuture;
use web_sys::{Request, Response};

pub type JsResult<T = JsValue, E = JsValue> = Result<T, E>;

pub fn window() -> web_sys::Window {
  web_sys::window().unwrap_throw()
}

pub async fn fetch(request: &Request) -> JsResult<Response> {
  let promise = window().fetch_with_request(request);
  let response = JsFuture::from(promise).await?;
  response.dyn_into()
}