{"action":"created","issue":{"url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/445","labels_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/445/labels{/name}","comments_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/445/comments","events_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/445/events","html_url":"https://github.com/ruby-concurrency/concurrent-ruby/issues/445","id":111255225,"number":445,"title":"Custom transactions for Value Objects, Structures, and Collections","user":{"login":"Zapotek","id":375743,"avatar_url":"https://avatars.githubusercontent.com/u/375743?v=3","gravatar_id":"","url":"https://api.github.com/users/Zapotek","html_url":"https://github.com/Zapotek","followers_url":"https://api.github.com/users/Zapotek/followers","following_url":"https://api.github.com/users/Zapotek/following{/other_user}","gists_url":"https://api.github.com/users/Zapotek/gists{/gist_id}","starred_url":"https://api.github.com/users/Zapotek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Zapotek/subscriptions","organizations_url":"https://api.github.com/users/Zapotek/orgs","repos_url":"https://api.github.com/users/Zapotek/repos","events_url":"https://api.github.com/users/Zapotek/events{/privacy}","received_events_url":"https://api.github.com/users/Zapotek/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-10-13T19:44:30Z","updated_at":"2015-10-13T21:06:38Z","closed_at":"2015-10-13T21:06:38Z","body":"I couldn't find something relevant in the docs but is there a way to perform custom actions on, say, a `Concurrent::Hash` that share the same lock/sync procedures as the object itself?\r\n\r\nSometimes custom handling may be required prior to pushing or removing items and it'd be nice if those actions could be synchronized too."},"comment":{"url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/comments/147854066","html_url":"https://github.com/ruby-concurrency/concurrent-ruby/issues/445#issuecomment-147854066","issue_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/445","id":147854066,"user":{"login":"Zapotek","id":375743,"avatar_url":"https://avatars.githubusercontent.com/u/375743?v=3","gravatar_id":"","url":"https://api.github.com/users/Zapotek","html_url":"https://github.com/Zapotek","followers_url":"https://api.github.com/users/Zapotek/followers","following_url":"https://api.github.com/users/Zapotek/following{/other_user}","gists_url":"https://api.github.com/users/Zapotek/gists{/gist_id}","starred_url":"https://api.github.com/users/Zapotek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Zapotek/subscriptions","organizations_url":"https://api.github.com/users/Zapotek/orgs","repos_url":"https://api.github.com/users/Zapotek/repos","events_url":"https://api.github.com/users/Zapotek/events{/privacy}","received_events_url":"https://api.github.com/users/Zapotek/received_events","type":"User","site_admin":false},"created_at":"2015-10-13T21:06:38Z","updated_at":"2015-10-13T21:06:38Z","body":"Cool, thanks guys."}}