{"action":"created","issue":{"url":"https://api.github.com/repos/HangfireIO/Hangfire/issues/401","repository_url":"https://api.github.com/repos/HangfireIO/Hangfire","labels_url":"https://api.github.com/repos/HangfireIO/Hangfire/issues/401/labels{/name}","comments_url":"https://api.github.com/repos/HangfireIO/Hangfire/issues/401/comments","events_url":"https://api.github.com/repos/HangfireIO/Hangfire/issues/401/events","html_url":"https://github.com/HangfireIO/Hangfire/issues/401","id":94554914,"number":401,"title":"Async support for storage API","user":{"login":"sergeyzwezdin","id":800755,"avatar_url":"https://avatars.githubusercontent.com/u/800755?v=3","gravatar_id":"","url":"https://api.github.com/users/sergeyzwezdin","html_url":"https://github.com/sergeyzwezdin","followers_url":"https://api.github.com/users/sergeyzwezdin/followers","following_url":"https://api.github.com/users/sergeyzwezdin/following{/other_user}","gists_url":"https://api.github.com/users/sergeyzwezdin/gists{/gist_id}","starred_url":"https://api.github.com/users/sergeyzwezdin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sergeyzwezdin/subscriptions","organizations_url":"https://api.github.com/users/sergeyzwezdin/orgs","repos_url":"https://api.github.com/users/sergeyzwezdin/repos","events_url":"https://api.github.com/users/sergeyzwezdin/events{/privacy}","received_events_url":"https://api.github.com/users/sergeyzwezdin/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-07-12T10:43:55Z","updated_at":"2016-05-27T15:59:23Z","closed_at":null,"body":"Modern data access libraries are migrating to async methods in their API. For example, updated MongoDB driver [rewritten](http://mongodb.github.io/mongo-csharp-driver/2.0/what_is_new/) with async support.\r\n\r\nOn the other hand, HangFire have synchronous API for internal objects like `IStorageConnection`, `IFetchedJob`, `IMonitoringApi`, `IWriteOnlyTransaction` and so on.\r\n\r\nIt forces to use workarounds like AsyncHelper to build custom storage for HangFire.\r\n\r\nSo my suggestion is to update API in async way (e.g. return `Task<TResult>` instead of `TResult`)."},"comment":{"url":"https://api.github.com/repos/HangfireIO/Hangfire/issues/comments/222185172","html_url":"https://github.com/HangfireIO/Hangfire/issues/401#issuecomment-222185172","issue_url":"https://api.github.com/repos/HangfireIO/Hangfire/issues/401","id":222185172,"user":{"login":"mlewski","id":19294422,"avatar_url":"https://avatars.githubusercontent.com/u/19294422?v=3","gravatar_id":"","url":"https://api.github.com/users/mlewski","html_url":"https://github.com/mlewski","followers_url":"https://api.github.com/users/mlewski/followers","following_url":"https://api.github.com/users/mlewski/following{/other_user}","gists_url":"https://api.github.com/users/mlewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mlewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mlewski/subscriptions","organizations_url":"https://api.github.com/users/mlewski/orgs","repos_url":"https://api.github.com/users/mlewski/repos","events_url":"https://api.github.com/users/mlewski/events{/privacy}","received_events_url":"https://api.github.com/users/mlewski/received_events","type":"User","site_admin":false},"created_at":"2016-05-27T15:59:23Z","updated_at":"2016-05-27T15:59:23Z","body":"+1, @odinserj, per comment above, could you add to the 2.0 issue-milestone?"}}
{"actor":{"display_login":"mlewski"}}