> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# clearSubscriptions | Polygon

> Use eth_clearSubscriptions on Polygon via ethers.js to remove all active WebSocket subscriptions from your Chainstack node connection at once.

The subscriptions available using the ethers.js `provider.on` method are:

<CardGroup>
  <Card title="subscribe('newBlockHeaders')" href="/reference/polygon-subscribenewblockheaders" icon="angle-right" iconType="solid" horizontal />

  <Card title="subscribe('pendingTransactions')" href="/reference/polygon-subscribependingtransactions" icon="angle-right" iconType="solid" horizontal />

  <Card title="subscribe('logs')" href="/reference/polygon-subscribelogs" icon="angle-right" iconType="solid" horizontal />

  <Card title="subscribe('syncing')" href="/reference/polygon-subscribesyncing" icon="angle-right" iconType="solid" horizontal />
</CardGroup>

## Parameters

`boolean` — keep the [subscribe("syncing")](/reference/polygon-subscribesyncing) subscription if `true`.

## Response

`boolean` — the boolean value indicating if the subscriptions were removed successfully. `true` if removed successfully, `false` if not.

## `clearSubscriptions` code example

<CodeGroup>
  ```javascript index.js theme={"system"}
  const { ethers } = require("ethers");
  const NODE_URL = "CHAINSTACK_WSS_URL";
  const provider = new ethers.WebSocketProvider(NODE_URL);

  async function clearSubscriptions() {
      try {
        await provider.removeAllListeners();
        console.log("Subscriptions were canceled successfully");
        return process.exit(1)

      } catch (error) {
        console.error("Failed to cancel subscriptions:", error);
        return process.exit(1)
      }
    }

  clearSubscriptions()
  ```
</CodeGroup>

## Use case

A way to use the `clearSubscriptions` method is to place it in a timer to clear all of the subscriptions after a pre-determined about.

The following code is an example using the [subscribe("newBlockHeaders")](/reference/polygon-subscribenewblockheaders) method, which will be stopped and removed after one minute using `clearSubscriptions`:

<CodeGroup>
  ```javascript index.js theme={"system"}
  const { ethers } = require("ethers");
  const NODE_URL = "CHAINSTACK_WSS_URL";
  const provider = new ethers.WebSocketProvider(NODE_URL);

  async function subscribeToNewBlocks() {
      try {
          // Listen for the 'block' event, emitted on every new block
          provider.on('block', handleNewBlock);
          console.log("Subscribed to new blocks");
      } catch (error) {
          console.error(`Error subscribing to new blocks: ${error}`);
      }
  }

  /* Fallback functions to react to the different events */

  // Event listener that logs the received block number
  async function handleNewBlock(blockNumber) {
      const block = await provider.getBlock(blockNumber);
      console.log(block);
  }

  async function clearSubscriptions() {
      try {
          await provider.removeAllListeners();
          console.log("Subscriptions were canceled successfully");
          return process.exit(1)

      } catch (error) {
          console.error("Failed to cancel subscriptions:", error);
          return process.exit(1)
      }
  }

  async function main() {

      subscribeToNewBlocks();

      // Run clearSubscriptions() once after 60 seconds
      setTimeout(clearSubscriptions, 60000);
  }

  main()
  ```
</CodeGroup>

The code starts by defining an async function called `subscribeToNewBlocks` that subscribes to new blocks by registering a listener for the `block` event using the `provider.on` method. Each time a new block is mined, ethers.js emits the block number, and the `handleNewBlock` listener fetches the full block with `provider.getBlock` and logs it to the console.

The `subscribeToNewBlocks` function is called from the `main` function, which is also defined in the code. The `main` function calls `subscribeToNewBlocks` to create a new subscription and then schedules the `clearSubscriptions` function to run once after 60 seconds using the `setTimeout` function. The `clearSubscriptions` function uses the `provider.removeAllListeners` method to cancel any existing subscriptions and log a message to the console if the cancellation was successful.

## Try the `clearSubscriptions` RPC method yourself
