Why can't I send an NSImage across actor boundaries?

The warning appears at the caller of that code

@Observable
@MainActor
public class IdentityAssetManager {

   ...

    public func logoImage(size:LogoSize) -> sending HSImage? {

        var logoPath:Path?
        
        switch size {
        case .large:
            logoPath = path(for: .logo)
        case .small:
            logoPath = path(for: .logoSmall)
        case .preferSmall:
            logoPath = path(for: .logoSmall) ?? path(for: .logo)
        }
        
        guard let logoPath else {
            return nil
        }
        
        return HSImage(contentsOfFile: logoPath.string)
    }



which is then called from


class CompositionImageLayerBuilder {

  ...

func build(for plan: RenderPlan) async throws -> CALayer {

    let introLength = plan.preRenderedIntroLength

    let endTitleRange = CMTimeRange(start: composition.duration - plan.outroLength,
                                    duration: plan.outroLength)

    if showLogoWatermarkOnEdit {
        let watermarkRange = CMTimeRange(start: introLength,
                                         end: composition.duration - endTitleRange.duration)
        await addWatermark(range: watermarkRange)
    }

    if !plan.hasPreRenderedOutro {
        let dzText = await logoHeadline
        let subheadline = await logoSubheadline
        
  //ERROR HERE on logoImage
        let dzImage = await dropzoneProvider.assetManager?.logoImage(size:.large)

        try addEndLogo(
            image: dzImage,
            headline: dzText,
            subheadline: subheadline,
            background: .white,
            logoRange: endTitleRange
        )
    }

    let logoRange = CMTimeRange(start: composition.duration - fffLogoDuration,
                                    duration: fffLogoDuration)
    try addFFFLogo(range: logoRange)

    return parentLayer
}

(sorry for multiple edits - battling mobile internet while posting)