Syscall.CallAsync expects a callback with signature callback({env_dict}, {result_dict}), where env_dict contains cursor and vim state info. In practice, it's not easy to remember the argument order, and it's easy enough and more explicit/flexible for the caller to just capture the env info they need and bind it to the callback with maktaba#function#Create.
We should migrate Syscall.CallAsync to expect a signature callback({result_dict}) instead and just document how callers can capture and pass info along.