JorgeeFG
JorgeeFG

Reputation: 5961

Can you use await in promise' catch block of javascript?

I'm getting an error in the following code, in the await part:

SyntaxError: Can not use keyword 'await' outside an async function (91:12)

.catch((error) => {
      response.setOriginalResponse(error);
      this.logger.log(genericError, LEVEL_ERROR, error);

      if (error.hasOwnProperty('response')) {
        await error.response.json().then((data) => {
          response.setData(data);
          response.addError(parseErrorDescriptionFromResponseMessage(data.message));
        });
      } else {
        response.addError(genericError);
      }

      return response;
    });

The function is async

async registerUser(username, email, password, provisionalToken)

I am doing a fetch call inside.

Upvotes: 0

Views: 136

Answers (1)

Jagan N
Jagan N

Reputation: 2065

The anonymous function you're using isn't async. Try below code.

.catch(async(error) => {
  response.setOriginalResponse(error);
  this.logger.log(genericError, LEVEL_ERROR, error);

  if (error.hasOwnProperty('response')) {
    await error.response.json().then((data) => {
      response.setData(data);
      response.addError(parseErrorDescriptionFromResponseMessage(data.message));
    });
  } else {
    response.addError(genericError);
  }

  return response;
});

Upvotes: 2

Related Questions