Web3.js: Can't use Filter.get() with async/await

Created on 6 Sep 2017  路  2Comments  路  Source: ChainSafe/web3.js

Hello,

version: ^1.0.0-beta.18

I am pretty sure it was possible to use Filter.get() with async/await previously, but now I need a callback.

it(('should whatever', async () => {
 let transferEvent = contract.Transfer();
 const events = await transferEvent.get();
})

Error: Filter ID Error: filter().get() can't be chained synchronous, please provide a callback for the get() method.

Most helpful comment

try this out.

const Promisify = (inner) =>
    new Promise((resolve, reject) =>
        inner((err, res) => {
            if (err) {
                reject(err);
            } else {
                resolve(res);
            }
        })
    );

it(('should whatever', async () => {
 let transferEvent = contract.Transfer();
 const events = await Promisify(cb => transferEvent.get(cb));
})

All 2 comments

try this out.

const Promisify = (inner) =>
    new Promise((resolve, reject) =>
        inner((err, res) => {
            if (err) {
                reject(err);
            } else {
                resolve(res);
            }
        })
    );

it(('should whatever', async () => {
 let transferEvent = contract.Transfer();
 const events = await Promisify(cb => transferEvent.get(cb));
})

Why doesn't the returned promise/event from the plain method work with the await keyword if it is a promise? Why does it need to be wrapped in another promise?

Was this page helpful?
0 / 5 - 0 ratings