asynchronous functional promises futures whatever (not sure yet)