Skip to content

Use Promise.await when calling before and after methods #19

Open
@antislash21

Description

@antislash21

I use meteor hooks to perform calls to external APIs (to synchronise groups between my Meteor app and external apps).
The methods I pass to afterMethod are asynchronous, but when they are called, my app does not await for them to finish.

This results in incoherencies when i perform several actions one after another. For example:

  • create a group
  • assign users to this group

the second call fails because it tries to assign users before the group is actually created in the external application.

The only way I found for solving this problem is to modify server.js in order to wrap before/after functions calls with Promise.await :

    for (const beforeFn of beforeFns) {
      if (Promise.await(beforeFn.apply(this, args)) === false) {
        return false;
      }
    }

....

    for (const afterFn of afterFns) {
      try { Promise.await(afterFn.apply(this, args)); } catch (error) { /* */ }
    }

Is it possible to integrate these changes to this repository to avoid making a fork ?

Thanks for your time

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions