# \[Pitch\] @completionHandlerAsync attribute

**URL:** <https://forums.swift.org/t/pitch-completionhandlerasync-attribute/49004>\
**Category:** Pitches\
**Tags:** asynchronous\
**Created:** [May 27, 2021, 11:55pm UTC](https://forums.swift.org/t/pitch-completionhandlerasync-attribute/49004 "2021-05-27T23:55:22Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![ktoso](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/ktoso/32/44526_2.png) [@ktoso](https://forums.swift.org/u/ktoso)\
**Post date:** [May 28, 2021, 12:31am UTC](https://forums.swift.org/t/pitch-completionhandlerasync-attribute/49004/2 "2021-05-28T00:31:02Z")

</div>

This sounds great and should be very useful 👍

So the `"process(data:)"` is a string, but really it is going to be typechecked for existence of the function anyway. I wonder if we could skip the `""` and just have it be `@...(process(data:), ...)` if that is possible? I'm not sure if that would cause hell for parsing those or not as much.

We discussed with Ben and perhaps the name may use some iteration still? Originally this was discussed as `@asyncAlternative` which sounds good as but had the issue that it was confusing to some if "this" function is the async alternative, or the one pointed at is the alternative.

Perhaps we can find some good name for this still though, like `@alternative(async: hello(hi:))` or `@preferredAlternative(async: hello(hi:))`? Not sure if taking up the alternative name is better or worse than taking the very specific use-case to heart and saying `preferredAsyncAlternative(hello(hi:))` though 🤔

It might be easier to say this is the `@asyncAlternative` after all...?

---

_[View the full topic](https://forums.swift.org/t/pitch-completionhandlerasync-attribute/49004)._
