// const startUrl = "http://swapi.dev/api/";
// const url = (str) => typeof str === "string" && str.startsWith(startUrl);
// table = (el, obj) => {
// for (var [key, value] of Object.entries(obj)) {
// const div = document.createElement("div");
// div.style.border = "1px solid black";
// div.style.margin = "5px 5px";
// div.style.padding = "5px";
// if (url(value)) {
// value = [value];
// }
// if (value instanceof Array) {
// div.innerHTML = `${key}: `;
// for (var item of value)
// if (url(item)) {
// const button = document.createElement("button");
// button.innerText = item.slice(startUrl.length);
// div.appendChild(button);
// button.onclick = () => {
// const div1 = document.createElement("div");
// div1.style.border = "2px solid green";
// div1.style.margin = "5px 5px";
// div.appendChild(div1);
// fetch("https://swapi.dev/api/" + button.innerText)
// .then((res) => res.json())
// .then((luke) => table(div1, luke));
// };
// }
// } else {
// div.innerHTML = `${key}: ${value}`;
// }
// el.appendChild(div);
// }
// };
// fetch("https://swapi.dev/api/people/1/")
// .then((res) => res.json())
// .then((luke) => table(films, luke));
// // myfetch
// function myfetch(url) {
// return new Promise((resolve, reject) => {
// const xhr = new XMLHttpRequest();
// xhr.open("GET", url, true);
// xhr.onload = () => {
// xhr.status != 200
// ? reject(xhr.response)
// : resolve(JSON.parse(xhr.responseText));
// };
// xhr.onerror = () => reject(xhr.statusText);
// xhr.send();
// });
// }
// myfetch("https://swapi.dev/api/people/1/").then((luke) => console.log(luke));
// // race
// const API1 = new Promise((resolve, reject) =>
// myfetch("https://swapi.dev/api/people/1/").then(() => resolve("API1"))
// );
// const API2 = (ms) => new Promise((ok) => setTimeout(() => ok("API2"), ms));
// Promise.race([API1, API2(115)]).then((value) => console.log(value));