[ApiController]
[Route("[controller]")]
public class ProductsController : ControllerBase
{
  public async IAsyncEnumerable<Product> GetOnSaleProductsAsync(CancellationToken cancellationToken)
  {
    var products = _repository.GetProductsAsync();

    await foreach (var product in products.WithCancellation(cancellationToken))
    {
        if (product.IsOnSale)
        {
            yield return product;
        }
    }
  }

}