_isValidException(exception, transaction) {
    if (exception.error) {
      if (this._haveSeen(transaction, exception.error)) {
        return false
      }

      const error = exception.error
      if (typeof error !== 'string' && !error.message && !error.stack) {
        logger.trace(error, 'Got error that is not an instance of Error or string.')
        exception.error = null
      }
    }

    if (!exception.error && (!transaction || !transaction.statusCode || transaction.error)) {
      return false
    }

    if (exception.error) {
      logger.trace(exception.error, 'Got exception to trace:')
    } else {
      logger.trace(transaction, 'Got transaction error to trace:')
    }

    return true
  }
Helper method for ensuring that a collected exception/transaction combination can be collected

@param {object} exception the exception to validate
@param {Transaction} transaction the Transaction to validate, if exception is malformed we'll try to fallback to transaction data
@returns {boolean} whether or not the exception/transaction combo has everything needed for processing