{"action":"opened","number":71,"pull_request":{"url":"https://api.github.com/repos/yahoo/fluxible/pulls/71","id":31494848,"html_url":"https://github.com/yahoo/fluxible/pull/71","diff_url":"https://github.com/yahoo/fluxible/pull/71.diff","patch_url":"https://github.com/yahoo/fluxible/pull/71.patch","issue_url":"https://api.github.com/repos/yahoo/fluxible/issues/71","number":71,"state":"open","locked":false,"title":"Support promises in actions","user":{"login":"cesarandreu","id":656870,"avatar_url":"https://avatars.githubusercontent.com/u/656870?v=3","gravatar_id":"","url":"https://api.github.com/users/cesarandreu","html_url":"https://github.com/cesarandreu","followers_url":"https://api.github.com/users/cesarandreu/followers","following_url":"https://api.github.com/users/cesarandreu/following{/other_user}","gists_url":"https://api.github.com/users/cesarandreu/gists{/gist_id}","starred_url":"https://api.github.com/users/cesarandreu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cesarandreu/subscriptions","organizations_url":"https://api.github.com/users/cesarandreu/orgs","repos_url":"https://api.github.com/users/cesarandreu/repos","events_url":"https://api.github.com/users/cesarandreu/events{/privacy}","received_events_url":"https://api.github.com/users/cesarandreu/received_events","type":"User","site_admin":false},"body":"I added lots of tests to executeAction. New behavior:\r\n\r\n* Execute action returns a promise\r\n* If done callback is passed to execute action, it'll be called when the promise is resolved or rejected\r\n* If action returns a promise, resolve/reject execute action promise with result/error\r\n* If action takes less than 3 params, execute action promise will be resolved with action return value\r\n* If action throws an error, execute action promise will be rejected with thrown value\r\n* When action takes 3 params, it'll receive a callback that can reject/resolve the execute action promise\r\n\r\nShould be almost entirely backwards compatible. While writing this I realized that my change to `componentAction.executeAction` actually breaks backwards compatibility with component action handler, since now it'll only get executed when there's errors. Should I revert this change? \r\n\r\n* I'm not sure what your styleguide is like... I tried to replicate existing code and follow the linter's suggestions.\r\n* Should I update the docs as well?\r\n* Is my jsdoc-style comment alright? I'm not sure how to explain the different branches, so I just added a few lines on top of the method.\r\n* Is the goal to keep both promises and callbacks or are you gonna deprecate callbacks? (I'd vote for deprecating em)\r\n\r\n\r\n","created_at":"2015-03-19T04:35:11Z","updated_at":"2015-03-19T04:35:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/yahoo/fluxible/pulls/71/commits","review_comments_url":"https://api.github.com/repos/yahoo/fluxible/pulls/71/comments","review_comment_url":"https://api.github.com/repos/yahoo/fluxible/pulls/comments{/number}","comments_url":"https://api.github.com/repos/yahoo/fluxible/issues/71/comments","statuses_url":"https://api.github.com/repos/yahoo/fluxible/statuses/801084c1ff3c35b928ff6881f167b6afd91dd703","head":{"label":"cesarandreu:action-promise","ref":"action-promise","sha":"801084c1ff3c35b928ff6881f167b6afd91dd703","user":{"login":"cesarandreu","id":656870,"avatar_url":"https://avatars.githubusercontent.com/u/656870?v=3","gravatar_id":"","url":"https://api.github.com/users/cesarandreu","html_url":"https://github.com/cesarandreu","followers_url":"https://api.github.com/users/cesarandreu/followers","following_url":"https://api.github.com/users/cesarandreu/following{/other_user}","gists_url":"https://api.github.com/users/cesarandreu/gists{/gist_id}","starred_url":"https://api.github.com/users/cesarandreu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cesarandreu/subscriptions","organizations_url":"https://api.github.com/users/cesarandreu/orgs","repos_url":"https://api.github.com/users/cesarandreu/repos","events_url":"https://api.github.com/users/cesarandreu/events{/privacy}","received_events_url":"https://api.github.com/users/cesarandreu/received_events","type":"User","site_admin":false},"repo":{"id":30524141,"name":"fluxible","full_name":"cesarandreu/fluxible","owner":{"login":"cesarandreu","id":656870,"avatar_url":"https://avatars.githubusercontent.com/u/656870?v=3","gravatar_id":"","url":"https://api.github.com/users/cesarandreu","html_url":"https://github.com/cesarandreu","followers_url":"https://api.github.com/users/cesarandreu/followers","following_url":"https://api.github.com/users/cesarandreu/following{/other_user}","gists_url":"https://api.github.com/users/cesarandreu/gists{/gist_id}","starred_url":"https://api.github.com/users/cesarandreu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cesarandreu/subscriptions","organizations_url":"https://api.github.com/users/cesarandreu/orgs","repos_url":"https://api.github.com/users/cesarandreu/repos","events_url":"https://api.github.com/users/cesarandreu/events{/privacy}","received_events_url":"https://api.github.com/users/cesarandreu/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cesarandreu/fluxible","description":"A pluggable container for isomorphic flux applications","fork":true,"url":"https://api.github.com/repos/cesarandreu/fluxible","forks_url":"https://api.github.com/repos/cesarandreu/fluxible/forks","keys_url":"https://api.github.com/repos/cesarandreu/fluxible/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cesarandreu/fluxible/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cesarandreu/fluxible/teams","hooks_url":"https://api.github.com/repos/cesarandreu/fluxible/hooks","issue_events_url":"https://api.github.com/repos/cesarandreu/fluxible/issues/events{/number}","events_url":"https://api.github.com/repos/cesarandreu/fluxible/events","assignees_url":"https://api.github.com/repos/cesarandreu/fluxible/assignees{/user}","branches_url":"https://api.github.com/repos/cesarandreu/fluxible/branches{/branch}","tags_url":"https://api.github.com/repos/cesarandreu/fluxible/tags","blobs_url":"https://api.github.com/repos/cesarandreu/fluxible/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cesarandreu/fluxible/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cesarandreu/fluxible/git/refs{/sha}","trees_url":"https://api.github.com/repos/cesarandreu/fluxible/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cesarandreu/fluxible/statuses/{sha}","languages_url":"https://api.github.com/repos/cesarandreu/fluxible/languages","stargazers_url":"https://api.github.com/repos/cesarandreu/fluxible/stargazers","contributors_url":"https://api.github.com/repos/cesarandreu/fluxible/contributors","subscribers_url":"https://api.github.com/repos/cesarandreu/fluxible/subscribers","subscription_url":"https://api.github.com/repos/cesarandreu/fluxible/subscription","commits_url":"https://api.github.com/repos/cesarandreu/fluxible/commits{/sha}","git_commits_url":"https://api.github.com/repos/cesarandreu/fluxible/git/commits{/sha}","comments_url":"https://api.github.com/repos/cesarandreu/fluxible/comments{/number}","issue_comment_url":"https://api.github.com/repos/cesarandreu/fluxible/issues/comments{/number}","contents_url":"https://api.github.com/repos/cesarandreu/fluxible/contents/{+path}","compare_url":"https://api.github.com/repos/cesarandreu/fluxible/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cesarandreu/fluxible/merges","archive_url":"https://api.github.com/repos/cesarandreu/fluxible/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cesarandreu/fluxible/downloads","issues_url":"https://api.github.com/repos/cesarandreu/fluxible/issues{/number}","pulls_url":"https://api.github.com/repos/cesarandreu/fluxible/pulls{/number}","milestones_url":"https://api.github.com/repos/cesarandreu/fluxible/milestones{/number}","notifications_url":"https://api.github.com/repos/cesarandreu/fluxible/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cesarandreu/fluxible/labels{/name}","releases_url":"https://api.github.com/repos/cesarandreu/fluxible/releases{/id}","created_at":"2015-02-09T07:37:51Z","updated_at":"2015-03-19T02:26:17Z","pushed_at":"2015-03-19T04:12:23Z","git_url":"git://github.com/cesarandreu/fluxible.git","ssh_url":"git@github.com:cesarandreu/fluxible.git","clone_url":"https://github.com/cesarandreu/fluxible.git","svn_url":"https://github.com/cesarandreu/fluxible","homepage":"http://fluxible.io","size":215,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"yahoo:master","ref":"master","sha":"a4d86424430adfa464df5597a983b10a11857465","user":{"login":"yahoo","id":16574,"avatar_url":"https://avatars.githubusercontent.com/u/16574?v=3","gravatar_id":"","url":"https://api.github.com/users/yahoo","html_url":"https://github.com/yahoo","followers_url":"https://api.github.com/users/yahoo/followers","following_url":"https://api.github.com/users/yahoo/following{/other_user}","gists_url":"https://api.github.com/users/yahoo/gists{/gist_id}","starred_url":"https://api.github.com/users/yahoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yahoo/subscriptions","organizations_url":"https://api.github.com/users/yahoo/orgs","repos_url":"https://api.github.com/users/yahoo/repos","events_url":"https://api.github.com/users/yahoo/events{/privacy}","received_events_url":"https://api.github.com/users/yahoo/received_events","type":"Organization","site_admin":false},"repo":{"id":26189434,"name":"fluxible","full_name":"yahoo/fluxible","owner":{"login":"yahoo","id":16574,"avatar_url":"https://avatars.githubusercontent.com/u/16574?v=3","gravatar_id":"","url":"https://api.github.com/users/yahoo","html_url":"https://github.com/yahoo","followers_url":"https://api.github.com/users/yahoo/followers","following_url":"https://api.github.com/users/yahoo/following{/other_user}","gists_url":"https://api.github.com/users/yahoo/gists{/gist_id}","starred_url":"https://api.github.com/users/yahoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yahoo/subscriptions","organizations_url":"https://api.github.com/users/yahoo/orgs","repos_url":"https://api.github.com/users/yahoo/repos","events_url":"https://api.github.com/users/yahoo/events{/privacy}","received_events_url":"https://api.github.com/users/yahoo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yahoo/fluxible","description":"A pluggable container for isomorphic flux applications","fork":false,"url":"https://api.github.com/repos/yahoo/fluxible","forks_url":"https://api.github.com/repos/yahoo/fluxible/forks","keys_url":"https://api.github.com/repos/yahoo/fluxible/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yahoo/fluxible/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yahoo/fluxible/teams","hooks_url":"https://api.github.com/repos/yahoo/fluxible/hooks","issue_events_url":"https://api.github.com/repos/yahoo/fluxible/issues/events{/number}","events_url":"https://api.github.com/repos/yahoo/fluxible/events","assignees_url":"https://api.github.com/repos/yahoo/fluxible/assignees{/user}","branches_url":"https://api.github.com/repos/yahoo/fluxible/branches{/branch}","tags_url":"https://api.github.com/repos/yahoo/fluxible/tags","blobs_url":"https://api.github.com/repos/yahoo/fluxible/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yahoo/fluxible/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yahoo/fluxible/git/refs{/sha}","trees_url":"https://api.github.com/repos/yahoo/fluxible/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yahoo/fluxible/statuses/{sha}","languages_url":"https://api.github.com/repos/yahoo/fluxible/languages","stargazers_url":"https://api.github.com/repos/yahoo/fluxible/stargazers","contributors_url":"https://api.github.com/repos/yahoo/fluxible/contributors","subscribers_url":"https://api.github.com/repos/yahoo/fluxible/subscribers","subscription_url":"https://api.github.com/repos/yahoo/fluxible/subscription","commits_url":"https://api.github.com/repos/yahoo/fluxible/commits{/sha}","git_commits_url":"https://api.github.com/repos/yahoo/fluxible/git/commits{/sha}","comments_url":"https://api.github.com/repos/yahoo/fluxible/comments{/number}","issue_comment_url":"https://api.github.com/repos/yahoo/fluxible/issues/comments{/number}","contents_url":"https://api.github.com/repos/yahoo/fluxible/contents/{+path}","compare_url":"https://api.github.com/repos/yahoo/fluxible/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yahoo/fluxible/merges","archive_url":"https://api.github.com/repos/yahoo/fluxible/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yahoo/fluxible/downloads","issues_url":"https://api.github.com/repos/yahoo/fluxible/issues{/number}","pulls_url":"https://api.github.com/repos/yahoo/fluxible/pulls{/number}","milestones_url":"https://api.github.com/repos/yahoo/fluxible/milestones{/number}","notifications_url":"https://api.github.com/repos/yahoo/fluxible/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yahoo/fluxible/labels{/name}","releases_url":"https://api.github.com/repos/yahoo/fluxible/releases{/id}","created_at":"2014-11-04T21:25:38Z","updated_at":"2015-03-19T04:33:48Z","pushed_at":"2015-03-18T02:16:48Z","git_url":"git://github.com/yahoo/fluxible.git","ssh_url":"git@github.com:yahoo/fluxible.git","clone_url":"https://github.com/yahoo/fluxible.git","svn_url":"https://github.com/yahoo/fluxible","homepage":"http://fluxible.io","size":1040,"stargazers_count":507,"watchers_count":507,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":32,"mirror_url":null,"open_issues_count":9,"forks":32,"open_issues":9,"watchers":507,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/yahoo/fluxible/pulls/71"},"html":{"href":"https://github.com/yahoo/fluxible/pull/71"},"issue":{"href":"https://api.github.com/repos/yahoo/fluxible/issues/71"},"comments":{"href":"https://api.github.com/repos/yahoo/fluxible/issues/71/comments"},"review_comments":{"href":"https://api.github.com/repos/yahoo/fluxible/pulls/71/comments"},"review_comment":{"href":"https://api.github.com/repos/yahoo/fluxible/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/yahoo/fluxible/pulls/71/commits"},"statuses":{"href":"https://api.github.com/repos/yahoo/fluxible/statuses/801084c1ff3c35b928ff6881f167b6afd91dd703"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":2,"additions":154,"deletions":8,"changed_files":3}}