public Task <IStorableProduct> CreateAsync(IStorableProduct storableProduct)
        {
            InternalContract.RequireNotNull(storableProduct, nameof(storableProduct));
            InternalContract.RequireValidated(storableProduct, nameof(storableProduct));

            ThrowConflictIfProductWithIdExists(storableProduct.Id);
            return(Task.FromResult(storableProduct));
        }
        public Task <IStorableProduct> UpdateAsync(IStorableProduct storableProduct)
        {
            InternalContract.RequireNotNull(storableProduct, nameof(storableProduct));
            InternalContract.RequireValidated(storableProduct, nameof(storableProduct));

            GetProductOrThrowNotFound(storableProduct.Id);

            return(Task.FromResult(storableProduct));
        }