{"action":"created","issue":{"url":"https://api.github.com/repos/SergeyTeplyakov/TplTipsAndTricks/issues/1","labels_url":"https://api.github.com/repos/SergeyTeplyakov/TplTipsAndTricks/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/SergeyTeplyakov/TplTipsAndTricks/issues/1/comments","events_url":"https://api.github.com/repos/SergeyTeplyakov/TplTipsAndTricks/issues/1/events","html_url":"https://github.com/SergeyTeplyakov/TplTipsAndTricks/pull/1","id":91515588,"number":1,"title":"Easy made simple )))","user":{"login":"yevhen","id":107726,"avatar_url":"https://avatars.githubusercontent.com/u/107726?v=3","gravatar_id":"","url":"https://api.github.com/users/yevhen","html_url":"https://github.com/yevhen","followers_url":"https://api.github.com/users/yevhen/followers","following_url":"https://api.github.com/users/yevhen/following{/other_user}","gists_url":"https://api.github.com/users/yevhen/gists{/gist_id}","starred_url":"https://api.github.com/users/yevhen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yevhen/subscriptions","organizations_url":"https://api.github.com/users/yevhen/orgs","repos_url":"https://api.github.com/users/yevhen/repos","events_url":"https://api.github.com/users/yevhen/events{/privacy}","received_events_url":"https://api.github.com/users/yevhen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-06-27T21:22:17Z","updated_at":"2015-06-28T10:36:54Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/SergeyTeplyakov/TplTipsAndTricks/pulls/1","html_url":"https://github.com/SergeyTeplyakov/TplTipsAndTricks/pull/1","diff_url":"https://github.com/SergeyTeplyakov/TplTipsAndTricks/pull/1.diff","patch_url":"https://github.com/SergeyTeplyakov/TplTipsAndTricks/pull/1.patch"},"body":"Processing tasks one-by-one - why so complicated? :sunglasses:\r\n\r\nWhat's wrong with old good warm and fuzzy `foreach` statement? It looks like you're trying to shoehorn `await` to LINQ query comprehension syntax (which does not support `await`). Why not just drop it?\r\n\r\nI like when things are kept idiomatic and with `TaskEx` you just creating an additional DSL and for no particular reason. That's how it looks on a surface. :confused:\r\n\r\nMaybe you need to augment the sample name? It doesn't show any pattern, actually. It just shows that LINQ query syntax is a piece of crap :grinning:\r\n\r\nP.S. Also did some cleanup. I have R# installed :stuck_out_tongue_winking_eye:"},"comment":{"url":"https://api.github.com/repos/SergeyTeplyakov/TplTipsAndTricks/issues/comments/116253097","html_url":"https://github.com/SergeyTeplyakov/TplTipsAndTricks/pull/1#issuecomment-116253097","issue_url":"https://api.github.com/repos/SergeyTeplyakov/TplTipsAndTricks/issues/1","id":116253097,"user":{"login":"yevhen","id":107726,"avatar_url":"https://avatars.githubusercontent.com/u/107726?v=3","gravatar_id":"","url":"https://api.github.com/users/yevhen","html_url":"https://github.com/yevhen","followers_url":"https://api.github.com/users/yevhen/followers","following_url":"https://api.github.com/users/yevhen/following{/other_user}","gists_url":"https://api.github.com/users/yevhen/gists{/gist_id}","starred_url":"https://api.github.com/users/yevhen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yevhen/subscriptions","organizations_url":"https://api.github.com/users/yevhen/orgs","repos_url":"https://api.github.com/users/yevhen/repos","events_url":"https://api.github.com/users/yevhen/events{/privacy}","received_events_url":"https://api.github.com/users/yevhen/received_events","type":"User","site_admin":false},"created_at":"2015-06-28T10:36:54Z","updated_at":"2015-06-28T10:36:54Z","body":"> You can try to run the code and you'll see that the result is different. I'm eagerly starting all the async operations by calling ToList on query expression. So they DO run in parallel:)\r\n\r\nAh, right. Sorry, blind me. I was too focused on semantics (one-by-one) than on impl. Nightlife effects :smile: \r\n\r\n> Name of this pattern was borrowed from the Pluralsight cource on async and parallel programming. The original name was wait tasks one-by-one. And I don't think it is misleading, because the name suggests that this code should \"process\" tasks results one by one, and that is exactly what is happening.\r\n\r\nWhat course? That's really a bad and misleading name. For all my life I was thinking about one-by-one processing as being `in-order` processing and I think it is a universal meaning. It implies that you process results in the original order, which is not the case with your code.\r\n\r\n> So if you have better name for this idiom, I would glad to change the name.\r\n\r\nWhy not just preserving original `WhenAny` name including original method comments with the slight amendment and call it a day?. Original combinator method returns `Task` and yours will return `IEnumerable<Task>`. Also, for performance reasons I would probably provide a first version with a lambda as well.\r\n\r\nP.S. I don't watch Pluralsight. Found it to be too boring and spurious :smiley: "}}