Skip to content

Default retry behavior causes infinite event loop on error #87

@tommedema

Description

@tommedema

There's a flaw in the default retry behavior on line 59: whenever an error occurs, a new call stack is created and we immediately return.

Instead of returning, we should await this._onEventsError here and ensure that onEventsError is a promise.

Currently waiting for amplitude.flush causes the node.js event loop to never clear in the case of a rate limit error.

Here's an example integration test without a rate limit using jest:
Screen Shot 2021-03-13 at 5 28 10 PM

And here's one with a rate limit, notice how jest never exits:
Screen Shot 2021-03-13 at 5 28 42 PM

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions