javascript – Rewrite to use only promise-generating asynchronous operations and use only promises for logic flow and avoid setTimeout

The current code in the question is working code that already accomplishes the objective, but I would like to solicit ways to make it “better” code.

The code is to upload large files from Node.js to OneDrive, is based in code that I found here:

Upload large files from Node.js to OneDrive

I made a reduce version of the code to avoid the need of a token to explain my issue, and also use npm got package instead of npm request package because this last has been deprecated.

The code has a simulated server version where files are uploaded an a client.

The server application running in http://localhost:5000 is as follow:

const express = require('express');
const app = express();

app.put('/', function (req, res) { // PUT http://localhost:5000
     const rawHeaders = req.rawHeaders
     const bytesElement = rawHeaders(5)

     console.log(bytesElement)

     if(bytesElement === 'bytes 62914559-68663828/68663829'){
          res.send('Finish Uploading Data')
      }
})

 const port = 5000
 app.listen(port, () => console.log(`Listening port: ${port}`))

The client version that works ok is as follow:

const fs = require('fs');
const got = require('got');
const async = require('async');

const file = "./video.mp4"; 

function resUpload(){
   const uploadUrl = 'http://localhost:5000'
   uploadFile(uploadUrl);
}


function uploadFile(uploadUrl) {  
    const params = (
           {bstart: 0, bend: 62914558, cr: 'bytes 0-62914558/68663829', clen: 62914559, stime: 10000},
           {bstart: 62914559, bend: 68663828, cr: 'bytes 62914559-68663828/68663829', clen: 5749270, stime: 10000}
)

 async.eachSeries(params, function(st, callback){
    setTimeout(async function() {  

         fs.readFile(file,  async function read(e, f) {
             try {
                 const response = await got({ 
                     method: 'PUT',
                     url: uploadUrl,
                     headers: {
                         'Content-Length': st.clen,
                         'Content-Range': st.cr,
                     },
                       body: f.slice(st.bstart, st.bend + 1)}
                     );

                 console.log(response.body); // Finish Uploading Data
             } catch (error) {
                 console.log(error)
             }    
         });

       callback();  
  
     }, st.stime);
 });
}

 resUpload();

Thank jfriend00 for yours answers to my original question,
based on them I rephrase my initial question to:

Who could this code be rewrite using only promise-generating asynchronous operations and using only promises for logic flow and also avoiding the use of the setTimeout (Because is just an attempt to work around some other problem too)?