Fix: make sure `spread` returns a thenable