https://medium.com/@yemreak/asynchronously-initializing-a-readonly-property-in-typescript-769c24346eef