//Task fetch basic
// function receivInfoForLuck (dom, url) {
// fetch(url)
//   .then(res => res.json())
//   .then(luke => {
//     console.log(luke);
   
//     const table = document.createElement('table');
//     table.style.border = '1px solid';
//     table.style.borderCollapse = 'collapse';
//     dom.append(table);
       
//     for (let [key, value] of Object.entries(luke)) {
//       const tr = document.createElement('tr');
//       const th = document.createElement('th');
//       th.style.border = '1px solid #000';
//       const td = document.createElement('td');
//       td.style.border = '1px solid #000';
//       td.style.width = '300px'
//       table.append(tr);
//       tr.appendChild(th).innerHTML = `${key}`;
//       tr.append(td);

//       if (value.constructor == Array) {
//         for (let index of value) {
//           const p = document.createElement('p');
//           td.appendChild(p).innerHTML = `${index}\n `;
//         }
//       }

//       if (value.constructor!== Array) {
//         td.innerHTML = `${value}`     
//       }
//     }
//   })
// } 

// receivInfoForLuck(document.body, 'https://swapi.dev/api/people/1/')

// Task fetch improved

// function receivInfoForLuck (dom, url) {
//   fetch(url)
//     .then(res => res.json())
//     .then(luke => {
//       console.log(luke);
     
//       const table = document.createElement('table');
//       table.style.border = '1px solid';
//       table.style.borderCollapse = 'collapse';
//       dom.append(table);
         
//       for (let [key, value] of Object.entries(luke)) {
       
//         const tr = document.createElement('tr');
//         const th = document.createElement('th');
//         th.style.border = '1px solid #000';
//         const td = document.createElement('td');
//         td.style.border = '1px solid #000';
//         td.style.width = '300px'
//         table.append(tr);
//         tr.appendChild(th).innerHTML = `${key}`;
//         tr.append(td);

//         let numberForButton = 1;

//         function createInput (value, buttonNumber) {
          
//           const input = document.createElement('input');
//           input.type = 'button';
//           input.value = `${buttonNumber}`;
//           td.appendChild(input);
//           numberForButton ++; 
//           input.onclick = () => receivInfoForLuck(document.body, value);
//         }
       
//         if (value.constructor == Array) {
          
//           for (let index of value) {
            

//             if (typeof(index) !== 'string') {
//               const p = document.createElement('p');
//               td.appendChild(p).innerHTML = `${index}\n `;
//             }  
//               else if (index.includes('https://swapi.dev/api/')) {
//               createInput(index, numberForButton);
//             } 
//               else {  
//                 const p = document.createElement('p');
//                 td.appendChild(p).innerHTML = `${index}\n `;
//               }
//           }
//         }
//         if (value.constructor!== Array) {
          
//           if (typeof(value) !== 'string') {
//             td.innerHTML = `${value}`; 
//           }
//             else if (value.includes('https://swapi.dev/api/')) {
//               createInput(value, numberForButton);
//           } 
//               else {
//                 td.innerHTML = `${value}`;   
//               }
//         }
//       }
//     })
//   } 
  
// receivInfoForLuck(document.body, 'https://swapi.dev/api/people/1/');


//Task myfetch

function myfetch(url){
  return new Promise(function (resolve, reject){
    const xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.send();
    xhr.onload = function() {

      if (xhr.status != 200) { 
        return reject(`Ошибка ${xhr.status}: ${xhr.statusText}`);
        
      } else { 
        let value = JSON.parse(xhr.response);
        return resolve(value);
        }
      xhr.onerror = function() {  
        return reject('Запрос не удался');
    };
    };
  })
}

// let a = myfetch('https://swapi.dev/api/people/1/');
// a.then(res => console.log(res));


//TASK race
const delay = ms => new Promise(ok => setTimeout(() => ok(ms*Math.random()), ms))

Promise.race([
  myfetch('https://swapi.dev/api/people/1/'),
  delay(600)
]).then(obj => console.log(obj));