async getProp (propertyName) {
    logger.info(`[ctx] getting ${String(propertyName)}`)

    const value = this._properties.get(propertyName)
    if (value != null) {
      logger.info(`[ctx] Found existing property ${String(propertyName)}`)
      this._resolvePropToValue(propertyName, value)
      // @ts-ignore
      return value
    } else {
      logger.info(`[ctx] Could not find property ${String(propertyName)}`)
    }
    // no value exists, create deferred promise and return the promise
    return this._createDeferredForProp(propertyName).promise
  }
Get the value of a property wrapped in a promise.
@template T
@param {ContextProperties} propertyName
@returns {Promise<T>}