Search code examples
javascriptreactjsasync-awaites6-promise

Using Promise.reject() in async/await catch handler


I just wanted to know if it's a good practice to use the following code:

   const myFun = async () => {
     try {
         const response = await api();
         if(response.status === 200) {
            return response.data;
         }
      } catch(err) {
         return Promise.reject(err);
      }
   }

Here myFun will return a resolved/reject Promise that will be caught by another function. I just wanted to know if this is right way or are there any alternatives?


Solution

  • You are achieving nothing by trying to re-throw the error from api().

    Using async function will cause Promise.reject(error) to be called implicitly when an error is thrown anyway.

    Just write your function like this:

    const myFun = async () => {
         const response = await api();
         if (response.status === 200) {
              return response.data;
         }
         // You might want to return something else here
    }
    

    Then the calling function will still receive the error:

    try {
        await myFun();
    } catch (error) {
        // error still received
    }