{"action":"closed","number":327,"pull_request":{"url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls/327","id":270067127,"node_id":"MDExOlB1bGxSZXF1ZXN0MjcwMDY3MTI3","html_url":"https://github.com/aerogear/aerogear-js-sdk/pull/327","diff_url":"https://github.com/aerogear/aerogear-js-sdk/pull/327.diff","patch_url":"https://github.com/aerogear/aerogear-js-sdk/pull/327.patch","issue_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues/327","number":327,"state":"closed","locked":false,"title":"Non blocking queue","user":{"login":"wtrocki","id":981838,"node_id":"MDQ6VXNlcjk4MTgzOA==","avatar_url":"https://avatars3.githubusercontent.com/u/981838?v=4","gravatar_id":"","url":"https://api.github.com/users/wtrocki","html_url":"https://github.com/wtrocki","followers_url":"https://api.github.com/users/wtrocki/followers","following_url":"https://api.github.com/users/wtrocki/following{/other_user}","gists_url":"https://api.github.com/users/wtrocki/gists{/gist_id}","starred_url":"https://api.github.com/users/wtrocki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wtrocki/subscriptions","organizations_url":"https://api.github.com/users/wtrocki/orgs","repos_url":"https://api.github.com/users/wtrocki/repos","events_url":"https://api.github.com/users/wtrocki/events{/privacy}","received_events_url":"https://api.github.com/users/wtrocki/received_events","type":"User","site_admin":false},"body":"## Motivation\r\n\r\nAvoid blocking offline queue. \r\nGeneral idea is to return an error to the user instantly\r\nand then trigger another mutation that will be enqueued as an offline one.\r\n\r\n\r\n1. The request comes to an offline queue.\r\n2. Return observable with error instantly (mutate().catch() will be triggered)\r\n3. Attach observable to error object.\r\n\r\n```javascript\r\nclient.mutate.try()\r\n.catch(error => {\r\n    error.offlineObservable.then((data)=>{\r\n        // Successfully mutated after error\r\n    })\r\n})\r\n```\r\n\r\n<img width=\"440\" alt=\"Screen Shot 2019-04-12 at 5 56 41 PM\" src=\"https://user-images.githubusercontent.com/981838/56050500-61219800-5d4c-11e9-8bf1-457924f4a0a6.png\">\r\n\r\n\r\n## Tasks\r\n\r\n- [x] Implement nonblocking behavior\r\n- [ ] Unify storage \r\n\r\n","created_at":"2019-04-12T15:57:34Z","updated_at":"2019-04-17T15:32:21Z","closed_at":"2019-04-17T15:32:21Z","merged_at":"2019-04-17T15:32:21Z","merge_commit_sha":"359b54956d65cec44510ab66aec8c92b94d69725","assignee":null,"assignees":[],"requested_reviewers":[{"login":"danielpassos","id":13337,"node_id":"MDQ6VXNlcjEzMzM3","avatar_url":"https://avatars1.githubusercontent.com/u/13337?v=4","gravatar_id":"","url":"https://api.github.com/users/danielpassos","html_url":"https://github.com/danielpassos","followers_url":"https://api.github.com/users/danielpassos/followers","following_url":"https://api.github.com/users/danielpassos/following{/other_user}","gists_url":"https://api.github.com/users/danielpassos/gists{/gist_id}","starred_url":"https://api.github.com/users/danielpassos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielpassos/subscriptions","organizations_url":"https://api.github.com/users/danielpassos/orgs","repos_url":"https://api.github.com/users/danielpassos/repos","events_url":"https://api.github.com/users/danielpassos/events{/privacy}","received_events_url":"https://api.github.com/users/danielpassos/received_events","type":"User","site_admin":false},{"login":"piccolazucca","id":24867345,"node_id":"MDQ6VXNlcjI0ODY3MzQ1","avatar_url":"https://avatars1.githubusercontent.com/u/24867345?v=4","gravatar_id":"","url":"https://api.github.com/users/piccolazucca","html_url":"https://github.com/piccolazucca","followers_url":"https://api.github.com/users/piccolazucca/followers","following_url":"https://api.github.com/users/piccolazucca/following{/other_user}","gists_url":"https://api.github.com/users/piccolazucca/gists{/gist_id}","starred_url":"https://api.github.com/users/piccolazucca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/piccolazucca/subscriptions","organizations_url":"https://api.github.com/users/piccolazucca/orgs","repos_url":"https://api.github.com/users/piccolazucca/repos","events_url":"https://api.github.com/users/piccolazucca/events{/privacy}","received_events_url":"https://api.github.com/users/piccolazucca/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls/327/commits","review_comments_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls/327/comments","review_comment_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues/327/comments","statuses_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/statuses/fa22bde299987fa01c34d30623351a9eb3335014","head":{"label":"aerogear:mutation-blocking","ref":"mutation-blocking","sha":"fa22bde299987fa01c34d30623351a9eb3335014","user":{"login":"aerogear","id":954205,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk1NDIwNQ==","avatar_url":"https://avatars1.githubusercontent.com/u/954205?v=4","gravatar_id":"","url":"https://api.github.com/users/aerogear","html_url":"https://github.com/aerogear","followers_url":"https://api.github.com/users/aerogear/followers","following_url":"https://api.github.com/users/aerogear/following{/other_user}","gists_url":"https://api.github.com/users/aerogear/gists{/gist_id}","starred_url":"https://api.github.com/users/aerogear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aerogear/subscriptions","organizations_url":"https://api.github.com/users/aerogear/orgs","repos_url":"https://api.github.com/users/aerogear/repos","events_url":"https://api.github.com/users/aerogear/events{/privacy}","received_events_url":"https://api.github.com/users/aerogear/received_events","type":"Organization","site_admin":false},"repo":{"id":121781914,"node_id":"MDEwOlJlcG9zaXRvcnkxMjE3ODE5MTQ=","name":"aerogear-js-sdk","full_name":"aerogear/aerogear-js-sdk","private":false,"owner":{"login":"aerogear","id":954205,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk1NDIwNQ==","avatar_url":"https://avatars1.githubusercontent.com/u/954205?v=4","gravatar_id":"","url":"https://api.github.com/users/aerogear","html_url":"https://github.com/aerogear","followers_url":"https://api.github.com/users/aerogear/followers","following_url":"https://api.github.com/users/aerogear/following{/other_user}","gists_url":"https://api.github.com/users/aerogear/gists{/gist_id}","starred_url":"https://api.github.com/users/aerogear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aerogear/subscriptions","organizations_url":"https://api.github.com/users/aerogear/orgs","repos_url":"https://api.github.com/users/aerogear/repos","events_url":"https://api.github.com/users/aerogear/events{/privacy}","received_events_url":"https://api.github.com/users/aerogear/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/aerogear/aerogear-js-sdk","description":"Platform for Mobile focused backend services. ","fork":false,"url":"https://api.github.com/repos/aerogear/aerogear-js-sdk","forks_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/forks","keys_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/teams","hooks_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/hooks","issue_events_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/events","assignees_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/tags","blobs_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/languages","stargazers_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/stargazers","contributors_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/contributors","subscribers_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/subscribers","subscription_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/subscription","commits_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/merges","archive_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/downloads","issues_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/labels{/name}","releases_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/deployments","created_at":"2018-02-16T17:51:49Z","updated_at":"2019-04-11T08:52:14Z","pushed_at":"2019-04-17T15:32:21Z","git_url":"git://github.com/aerogear/aerogear-js-sdk.git","ssh_url":"git@github.com:aerogear/aerogear-js-sdk.git","clone_url":"https://github.com/aerogear/aerogear-js-sdk.git","svn_url":"https://github.com/aerogear/aerogear-js-sdk","homepage":"http://aerogear.org","size":11654,"stargazers_count":6,"watchers_count":6,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":23,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":10,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":23,"open_issues":10,"watchers":6,"default_branch":"master"}},"base":{"label":"aerogear:master","ref":"master","sha":"cf506b0c13fa19c211c1b32741916857db7ce09c","user":{"login":"aerogear","id":954205,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk1NDIwNQ==","avatar_url":"https://avatars1.githubusercontent.com/u/954205?v=4","gravatar_id":"","url":"https://api.github.com/users/aerogear","html_url":"https://github.com/aerogear","followers_url":"https://api.github.com/users/aerogear/followers","following_url":"https://api.github.com/users/aerogear/following{/other_user}","gists_url":"https://api.github.com/users/aerogear/gists{/gist_id}","starred_url":"https://api.github.com/users/aerogear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aerogear/subscriptions","organizations_url":"https://api.github.com/users/aerogear/orgs","repos_url":"https://api.github.com/users/aerogear/repos","events_url":"https://api.github.com/users/aerogear/events{/privacy}","received_events_url":"https://api.github.com/users/aerogear/received_events","type":"Organization","site_admin":false},"repo":{"id":121781914,"node_id":"MDEwOlJlcG9zaXRvcnkxMjE3ODE5MTQ=","name":"aerogear-js-sdk","full_name":"aerogear/aerogear-js-sdk","private":false,"owner":{"login":"aerogear","id":954205,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk1NDIwNQ==","avatar_url":"https://avatars1.githubusercontent.com/u/954205?v=4","gravatar_id":"","url":"https://api.github.com/users/aerogear","html_url":"https://github.com/aerogear","followers_url":"https://api.github.com/users/aerogear/followers","following_url":"https://api.github.com/users/aerogear/following{/other_user}","gists_url":"https://api.github.com/users/aerogear/gists{/gist_id}","starred_url":"https://api.github.com/users/aerogear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aerogear/subscriptions","organizations_url":"https://api.github.com/users/aerogear/orgs","repos_url":"https://api.github.com/users/aerogear/repos","events_url":"https://api.github.com/users/aerogear/events{/privacy}","received_events_url":"https://api.github.com/users/aerogear/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/aerogear/aerogear-js-sdk","description":"Platform for Mobile focused backend services. ","fork":false,"url":"https://api.github.com/repos/aerogear/aerogear-js-sdk","forks_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/forks","keys_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/teams","hooks_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/hooks","issue_events_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/events","assignees_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/tags","blobs_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/languages","stargazers_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/stargazers","contributors_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/contributors","subscribers_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/subscribers","subscription_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/subscription","commits_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/merges","archive_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/downloads","issues_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/labels{/name}","releases_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/aerogear/aerogear-js-sdk/deployments","created_at":"2018-02-16T17:51:49Z","updated_at":"2019-04-11T08:52:14Z","pushed_at":"2019-04-17T15:32:21Z","git_url":"git://github.com/aerogear/aerogear-js-sdk.git","ssh_url":"git@github.com:aerogear/aerogear-js-sdk.git","clone_url":"https://github.com/aerogear/aerogear-js-sdk.git","svn_url":"https://github.com/aerogear/aerogear-js-sdk","homepage":"http://aerogear.org","size":11654,"stargazers_count":6,"watchers_count":6,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":23,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":10,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":23,"open_issues":10,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls/327"},"html":{"href":"https://github.com/aerogear/aerogear-js-sdk/pull/327"},"issue":{"href":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues/327"},"comments":{"href":"https://api.github.com/repos/aerogear/aerogear-js-sdk/issues/327/comments"},"review_comments":{"href":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls/327/comments"},"review_comment":{"href":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/aerogear/aerogear-js-sdk/pulls/327/commits"},"statuses":{"href":"https://api.github.com/repos/aerogear/aerogear-js-sdk/statuses/fa22bde299987fa01c34d30623351a9eb3335014"}},"author_association":"MEMBER","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"wtrocki","id":981838,"node_id":"MDQ6VXNlcjk4MTgzOA==","avatar_url":"https://avatars3.githubusercontent.com/u/981838?v=4","gravatar_id":"","url":"https://api.github.com/users/wtrocki","html_url":"https://github.com/wtrocki","followers_url":"https://api.github.com/users/wtrocki/followers","following_url":"https://api.github.com/users/wtrocki/following{/other_user}","gists_url":"https://api.github.com/users/wtrocki/gists{/gist_id}","starred_url":"https://api.github.com/users/wtrocki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wtrocki/subscriptions","organizations_url":"https://api.github.com/users/wtrocki/orgs","repos_url":"https://api.github.com/users/wtrocki/repos","events_url":"https://api.github.com/users/wtrocki/events{/privacy}","received_events_url":"https://api.github.com/users/wtrocki/received_events","type":"User","site_admin":false},"comments":4,"review_comments":8,"maintainer_can_modify":false,"commits":16,"additions":421,"deletions":297,"changed_files":18}}
{"actor":{"display_login":"wtrocki"}}