{"action":"created","issue":{"url":"https://api.github.com/repos/Thomvis/BrightFutures/issues/75","labels_url":"https://api.github.com/repos/Thomvis/BrightFutures/issues/75/labels{/name}","comments_url":"https://api.github.com/repos/Thomvis/BrightFutures/issues/75/comments","events_url":"https://api.github.com/repos/Thomvis/BrightFutures/issues/75/events","html_url":"https://github.com/Thomvis/BrightFutures/pull/75","id":102310937,"number":75,"title":"Add Swift 2 / Xcode 7 support","user":{"login":"Thomvis","id":134170,"avatar_url":"https://avatars.githubusercontent.com/u/134170?v=3","gravatar_id":"","url":"https://api.github.com/users/Thomvis","html_url":"https://github.com/Thomvis","followers_url":"https://api.github.com/users/Thomvis/followers","following_url":"https://api.github.com/users/Thomvis/following{/other_user}","gists_url":"https://api.github.com/users/Thomvis/gists{/gist_id}","starred_url":"https://api.github.com/users/Thomvis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Thomvis/subscriptions","organizations_url":"https://api.github.com/users/Thomvis/orgs","repos_url":"https://api.github.com/users/Thomvis/repos","events_url":"https://api.github.com/users/Thomvis/events{/privacy}","received_events_url":"https://api.github.com/users/Thomvis/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/Thomvis/BrightFutures/milestones/2","html_url":"https://github.com/Thomvis/BrightFutures/milestones/3.0","labels_url":"https://api.github.com/repos/Thomvis/BrightFutures/milestones/2/labels","id":1280411,"number":2,"title":"3.0","description":null,"creator":{"login":"Thomvis","id":134170,"avatar_url":"https://avatars.githubusercontent.com/u/134170?v=3","gravatar_id":"","url":"https://api.github.com/users/Thomvis","html_url":"https://github.com/Thomvis","followers_url":"https://api.github.com/users/Thomvis/followers","following_url":"https://api.github.com/users/Thomvis/following{/other_user}","gists_url":"https://api.github.com/users/Thomvis/gists{/gist_id}","starred_url":"https://api.github.com/users/Thomvis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Thomvis/subscriptions","organizations_url":"https://api.github.com/users/Thomvis/orgs","repos_url":"https://api.github.com/users/Thomvis/repos","events_url":"https://api.github.com/users/Thomvis/events{/privacy}","received_events_url":"https://api.github.com/users/Thomvis/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":0,"state":"open","created_at":"2015-08-30T19:42:17Z","updated_at":"2015-08-30T19:42:17Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2015-08-21T06:38:07Z","updated_at":"2015-09-20T21:27:44Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Thomvis/BrightFutures/pulls/75","html_url":"https://github.com/Thomvis/BrightFutures/pull/75","diff_url":"https://github.com/Thomvis/BrightFutures/pull/75.diff","patch_url":"https://github.com/Thomvis/BrightFutures/pull/75.patch"},"body":"Open questions:\r\n\r\n- `future.success(value)`, `future.failure(error)` etc. are now throwing. While I think that in theory this is a good approach, in practice I find it a bit annoying and its making me add a lot of `try!`'s. Consider making `future.success(value)` non-throwing and create a second one (e.g. `future.firstAndOnlySuccess(value)`) that throws."},"comment":{"url":"https://api.github.com/repos/Thomvis/BrightFutures/issues/comments/141835844","html_url":"https://github.com/Thomvis/BrightFutures/pull/75#issuecomment-141835844","issue_url":"https://api.github.com/repos/Thomvis/BrightFutures/issues/75","id":141835844,"user":{"login":"Thomvis","id":134170,"avatar_url":"https://avatars.githubusercontent.com/u/134170?v=3","gravatar_id":"","url":"https://api.github.com/users/Thomvis","html_url":"https://github.com/Thomvis","followers_url":"https://api.github.com/users/Thomvis/followers","following_url":"https://api.github.com/users/Thomvis/following{/other_user}","gists_url":"https://api.github.com/users/Thomvis/gists{/gist_id}","starred_url":"https://api.github.com/users/Thomvis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Thomvis/subscriptions","organizations_url":"https://api.github.com/users/Thomvis/orgs","repos_url":"https://api.github.com/users/Thomvis/repos","events_url":"https://api.github.com/users/Thomvis/events{/privacy}","received_events_url":"https://api.github.com/users/Thomvis/received_events","type":"User","site_admin":false},"created_at":"2015-09-20T21:27:44Z","updated_at":"2015-09-20T21:27:44Z","body":"I've reverted the behavior of `f.success` etc. back to the BrightFutures 2.0 approach: an assert will be triggered if an already completed future is completed again. I experimented with having it throw an error but in practice this would make me add a lot of `try!`'s. Also, since this is considered a programmer error, a recoverable error would not be the best fit. I also considered making it a fatalError, but I don't want that to happen for people in production. Feedback is welcome!"}}