public Optional<RecoverableState> recoverableState() {
    if (isOkay()) {
      return Optional.of(RecoverableState.RECOVERABLE_STATE_OKAY);
    } else if (isTokenRefreshRequired()) {
      return Optional.of(RecoverableState.RECOVERABLE_STATE_NEEDS_TOKEN_REFRESH);
    } else {
      return Optional.empty(); // unrecoverable state
    }
  }
Returns the recoverable state of this response, if there is one, otherwise call {@link
toFatalState} or {@link throwDtpException} should detail what's wrong.
extensions/data-transfer/portability-data-transfer-microsoft/src/main/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponse.java