Res.status isn't a function

I’m encountering an error when calling a function returning a promise in my Express API (NodeJS):

TypeError: res.status is not a function at uploadpicture.then

This is my code:

router.post('/upload', (req, res, next)=> { 
  var busboy = new Busboy({headers: req.headers});
  busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
      if(fieldname == 'image') {
          // the buffer
          file.fileRead = [];
          file.on('data', function(data) {
              // add to the buffer as data comes in
              this.fileRead.push(data);
          });

          file.on('end', function() {
              // create a new stream with our buffered data
              var finalBuffer = Buffer.concat(this.fileRead);
              upload = uploadpicture(finalBuffer).then((res)=>{ //success request
                console.log(res);
                res.status(200).json({success: true, message: "Successfully uploaded !", url: res.data.link});
              },(err)=>{ //error
                res.status(500).json({success: false, message: "Error happenned while uploading !"});
              }).catch((error)=>{
                console.log(error);
                res.status(500).json({success: false, message: "Error happenned while uploading !"});
              });

          })
      }
  });
  busboy.on('finish', function() {
      //busboy finished
  });
  req.pipe(busboy);
});

And the uploadpicture function:

function uploadpicture(stream){ //get picture stream
    return new Promise((resolve, reject)=>{
    var options = {
      uri: 'https://api.imgur.com/3/image',
      method: 'POST',
      headers: {
          //'Authorization': 'Client-ID ' + config.client_id_imgur // put client id here
      },
      formData: {
          image: stream,
          type: 'file'
      },
      auth: {
        bearer: config.access_token_imgur,
      }
  };

  request(options)
      .then((parsedBody)=> {
          resolve(parsedBody);
      })
      .catch((err)=> {
        console.log(err);
        reject(err.toString())
      });
    });
  }

I’m trying to upload an image to Imgur via my Express API (NodeJS), but I’m getting the following error when calling a function returning a promise:

TypeError: res.status is not a function at uploadpicture.then

I’ve tried changing arrow functions to function() {} and adding next to the route parameters, but neither of these worked. Any help would be appreciated.

The issue is that the res object is being overwritten by the resolved value of the promise returned by uploadpicture function. To fix this, change the name of the resolved value to something other than res. For example:

upload = uploadpicture(finalBuffer).then((response)=>{ //success request
  console.log(response);
  res.status(200).json({success: true, message: "Successfully uploaded !", url: response.data.link});
},(err)=>{ //error
  res.status(500).json({success: false, message: "Error happenned while uploading !"});
}).catch((error)=>{
  console.log(error);
  res.status(500).json({success: false, message: "Error happenned while uploading !"});
});