News for hackers. Stuff that matters.
Re:Better Promises in JavaScript by mnr on Monday September 24, 2018 @08:38AM (#18057154)
This is already a feature in Vanilla.js [1] in the "Parentheses" module.

Example:

  const lines = (await fetch(myUrl)).text().split('\n');
[1] http://vanilla-js.com/

Edit: magic-promises promotes all accessed properties to magic-promises as well, and performs magic on functions, so it's not exactly the same, but I'm not sure if I'd want to add the proxy overhead to my code just to make my code more "fluent".

Re:Better Promises in JavaScript by franciscop on Monday September 24, 2018 @07:27PM (#18062360)
As explained .text() returns a promise, and the fact that many people don't know that and that your 1-line solution does not work is a strong indication that my solution is helpful!

With magic-promises you don't need to worry about whether something regurns a promise or not. See fs-array, some methods will return promises and some won't, but you can just treat them all the same.

Re:Better Promises in JavaScript by mnr on Tuesday September 25, 2018 @07:41AM (#18065421)
I thought I was so clever! But yes I see how it's very different. In general, magic (or using Proxy) scares me, but I'm warming up to the idea here.
Re:Better Promises in JavaScript by zebracanevra on Monday September 24, 2018 @10:48AM (#18058139)
fetch's Response.text also returns a Promise, so you'd have to await twice:

  const lines = (await (await fetch(myUrl)).text()).split('\n');
Re:Better Promises in JavaScript by mikewhy on Monday September 24, 2018 @03:38PM (#18060734)
I've always just added an overload:

    function fetchText(input?: string | Request, init?: RequestInit) {
      return fetch(input, init).then(x => x.text())
    }

    function fetchJson(input?: string | Request, init?: RequestInit) {
      return fetch(input, init).then(x => x.json())
    }
Re:Better Promises in JavaScript by mnr on Monday September 24, 2018 @11:16AM (#18058376)
Shucks, I can see how it becomes verbose.