Skip to content
This repository was archived by the owner on Jul 12, 2025. It is now read-only.
This repository was archived by the owner on Jul 12, 2025. It is now read-only.

Can't handle fetch cancelation #230

@phwb

Description

@phwb

Hi, I can't handle fetch cancelation. See code below:

Steps to reproduce

const fetchTask = (url) => task(resolver => {
  const controller = new AbortController()
  const init = {
    signal: controller.signal,
    method: 'post',
  }
  fetch(url, init)
    .then(resolver.resolve)
    .catch(resolver.reject)
  resolver.onCancelled(() => {
    controller.abort()
  })
})
fetchTask('/some/path').run().cancel() 
// after cancel() i'll got this error:
// Uncaught (in promise) Error: Only pending deferreds can be rejected, this deferred is already rejected.

Expected behaviour

Task rejected with error

I understand why does it happen but how I can handle cancelation error? Or may be I do it wrong?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions