createBackend = (duration, provider, syncProvider, providerContext) => {
	if (duration > 0) {
		return new CacheBackend(duration, provider, syncProvider, providerContext);
	}
	return new OperationMergerBackend(provider, syncProvider, providerContext);
}
@template {EXPECTED_FUNCTION} Provider
@template {EXPECTED_FUNCTION} AsyncProvider
@template FileSystem
@param {number} duration duration in ms files are cached
@param {Provider | undefined} provider provider
@param {AsyncProvider | undefined} syncProvider sync provider
@param {BaseFileSystem} providerContext provider context
@returns {OperationMergerBackend | CacheBackend} backend