Use Promise in example for #evaluate_async
Related to #234
I couldn't remember how to get a value back from evaluate_async and remembered I had created an example in a previous issue.
The existing example leverages arguments[0] and calls a simple object. Instead, I would like to see an actual, practical example using familiar things that people would commonly use this for.
Additionally, I think we should encourage usage of __f() as in the next example, instead of arguments[0], or rework the #evaluate_async template. As an example, if you call:
browser.evaluate_async '__f(arguments)', 5, "arg 1", 2, 3
# => ["arg 1", 2, 3, {}]
arguments[0] no longer refers to the fulfill callback. You end up receiving TypeError: arguments[0] is not a function (Ferrum::JavaScriptError).
Perhaps this highlights some tweaks that could be made to evaluate_async, but for now, I'd like to get this docs change up asap.
I don't like current API either, but I remember picking up the names for resolve and reject functions so that they don't collide with any other name (thus I added __), and now we are making them kinda explicit. Looking at:
browser.evaluate_async '__f(arguments)', 5, "arg 1", 2, 3
is so unreadable. I'm always confused when to put what, and use specs to remember how to use it. So maybe it's time to improve the API then if it's doable at all? :)
Reminding about this PR because I just also was confused by arguments[0] in the README.