Duplicate events

I’m using the node-asana Node.js library to get events from my task board, however when a event occurs, I get duplicates of the same event, except that the parent changes.

{ user:
   { gid: '1115525242622776',
     id: 1115525242622776,
     resource_type: 'user',
     name: 'Minxi' },
  created_at: '2019-03-26T17:10:52.141Z',
  type: 'task',
  action: 'deleted',
  resource:
   { gid: '1115958018353612',
     id: 1115958018353612,
     resource_type: 'task',
     name: 'test',
     resource_subtype: 'default_task' },
  parent: null }
{ user:
   { gid: '1115525242622776',
     id: 1115525242622776,
     resource_type: 'user',
     name: 'Minxi' },
  created_at: '2019-03-26T17:10:52.169Z',
  type: 'task',
  action: 'changed',
  resource:
   { gid: '1115958018353612',
     id: 1115958018353612,
     resource_type: 'task',
     name: 'test',
     resource_subtype: 'default_task' },
  parent: null }


	this.asanaClient.events
		.stream(nconf.get('asana:project_id'), {
			periodSeconds: 3,
			continueOnError: true,
		})
		.on('data', (event) => {
			console.log(event);
		});

The above codeblock contains the code and the response, here’s also when I add a task:

{ user:
   { gid: '1115525242622776',
     id: 1115525242622776,
     resource_type: 'user',
     name: 'Minxi' },
  created_at: '2019-03-26T17:22:10.439Z',
  type: 'task',
  action: 'added',
  resource:
   { gid: '1115958018353620',
     id: 1115958018353620,
     resource_type: 'task',
     name: 'Added a task.',
     resource_subtype: 'default_task' },
  parent:
   { gid: '1115524578809577',
     id: 1115524578809577,
     resource_type: 'project',
     name: 'Vale\'s Admin Board' } }
{ user:
   { gid: '1115525242622776',
     id: 1115525242622776,
     resource_type: 'user',
     name: 'Minxi' },
  created_at: '2019-03-26T17:22:10.491Z',
  type: 'task',
  action: 'added',
  resource:
   { gid: '1115958018353620',
     id: 1115958018353620,
     resource_type: 'task',
     name: 'Added a task.',
     resource_subtype: 'default_task' },
  parent:
   { gid: '1115524578809589',
     id: 1115524578809589,
     resource_type: 'section',
     name: 'Notes (Stickies)' } }

Yes, this is expected behavior. Asana’s event model is quite noisy; it can send the same event multiple times, and it generates multiple events for one action like adding a new task. You’ll have to write your event-handling code so that it properly deals with the multiple events and make it idempotent so that it properly handles the receipt of more than one occurrence of the same event.

2 Likes