I don't want to write a separate function to return a Promise in my firstly call. I just want to write this:
firstly
{
    return Promise<Bool>
    { inSeal in
        var isOrderHistory = false
        let importTester = CSVImporter<String>(url: url)
        importTester?.startImportingRecords(structure:
            { (inFieldNames) in
                if inFieldNames[2] == "Payment Instrument Type"
                {
                    isOrderHistory = true
                }
            }, recordMapper: { (inRecords) -> String in
                return ""   //  Don't care
            }).onFinish
            { (inItems) in
                inSeal.resolve(isOrderHistory)
            }
    }
}
.then
{ inIsOrderHistory in
    if inIsOrderHistory -> Void
    {
    }
    else
    {
...
But I'm getting something wrong. ImportMainWindowController.swift:51:5: Ambiguous reference to member 'firstly(execute:)'
None of the example code or docs seems to cover this (what I thought was a) basic use case. In the code above, the CSVImporter operates on a background queue and calls the methods asynchronously (although in order).
I can't figure out what the full type specification should be for Promise or firstly, or what.
 
                        
According to my understanding, since you are using
thenin the promise chain, it is also meant to return a promise and hence you are getting this error. If you intend not to return promise from your next step, you can directly usedoneafter firstly.Use below chain if you want to return Promise from
thenIf you do not want to return Promise from
then, you can use chain like below.I hope it helped.
Updated:
In case you do not want to return anything and
thenmandates to return aPromise, you can returnPromise<Void>like below.