svelte reactive async

JavaScript
import { writable, derived } from 'svelte/store';

const package_name = writable('svelte');
const download_count = derived(
	package_name,
	($package_name, set) => {
		fetch('https://api.npmjs.org/downloads/point/last-week/' + $package_name)
			.then(response => response.json())
			.then(data => set(data.downloads));

		return () => {
			// We override the `set` function to eliminate race conditions
			// This does *not* abort running fetch() requests, it only prevents
			// them from overriding the store.
			// To learn about canceling fetch requests, search the internet for `AbortController`
			set = () => {}
		}
	}
);

// Updating `$package_name` will asynchronously update `$download_count`
let package_name = 'svelte';
let download_count = 0;
$: fetch('https://api.npmjs.org/downloads/point/last-week/' + package_name)
	.then(response => response.json())
	.then(data => download_count = data.downloads || 0);

// Updating `package_name` will asynchronously update `download_count`

Source

Also in JavaScript: