Arrow function problems

function foo(ddb) {
return {
listTables: (params = {}, cb = idFunc) => {
const self = this
let currentList = params.currentList || []
return toPromise(ddb, ddb.listTables, omit(params, 'currentList'), cb)
.then(r => {
console.log('LISTTABLES result', r)
currentList = currentList.concat(r.TableNames || [])
if (!r.LastEvaluatedTableName || r.TableNames.length === 0) {
return { ...r, TableNames: currentList }
}
return self.listTables({ // <- Fails here
...params,
currentList,
ExclusiveStartTableName: r.LastEvaluatedTableName,
}, cb)
})
}
}
}
arrow-error.js
class MyClass {
myMethod = () => {
// ...code
}
}
class-methods.js