73"NAPI values/references must not be accessed outside the JS thread");
74
75// Contract for fetchFunc:
76// - it must return a value that never changes for the lifetime of the process, because it is read once and never refreshed
77// - it runs in the JS thread, and never runs at all in a process that has no JS thread
78// - it may run at any time after construction, not only at this fetcher's first optValue(), so it must not depend on state initialized later in the application startup
79// - it must not read another fetcher
80// - it must be cheap: its cost is paid by whoever triggers the batch it lands in
81// - it may return nullopt, and any outcome, including an escaping exception, is final and never retried
82// fetcherName is stored by pointer and must outlive the fetcher, so pass a string literal