Files
atomsync/tasks/todo.md
Florian Schroedl 973b079ae3 refactor: replace core.async with promesa for all async operations
- Store protocol now returns promesa promises instead of core.async channels
- MemoryStore: `(p/resolved val)` replaces chan+put!+close! ceremony
- IDBStore: `p/create` with resolve/reject wraps IDB callbacks
- sync.cljc: CLJ uses `p/vthread`, CLJS returns native Promise chains
- core.cljc: `p/let` replaces go blocks, timer-based sync loop replaces
  go-loop+alts!, debounced push replaces kick channel
- Tests use `deref` with timeout on promesa promises
- Todomvc example uses `p/let` instead of go/<!
2026-04-16 20:05:08 +02:00

686 B

Replace core.async with promesa

Tasks

  • 1. Add funcool/promesa to deps.edn, remove core.async
  • 2. Update store.cljc docstring (returns promises, not channels)
  • 3. Rewrite store/memory.cljc — return (p/resolved val)
  • 4. Rewrite store/idb.cljs — wrap IDB callbacks in (p/create ...)
  • 5. Rewrite sync.cljc — return promises from pull!/push!/fetch-transit
  • 6. Rewrite core.cljc — promises + timer-based sync loop
  • 7. Update test/core_test.cljderef promises instead of <!!
  • 8. Update example/todomvc/todomvc.cljsp/let instead of go/<!
  • 9. Run tests — 28 tests, 87 assertions, 0 failures