Rajiv reports from his testing on Windows:
start-instance starts up the remote instance, however the command does not
return. If I kill the command and do a list-instances it shows that the instance
is in fact running.
This sounds similar to issue 12725 which is a local case of start-instance
hanging on Windows. It appears that on Windows if you have a child that executes
another process, the stdin/err that the parent is reading off of are not closed
when the child exits. They stay open until the grandchild exits. This means if
the parent is blocked reading on the IO streams from the child they won't
unblock until the grand-child exits.
I'm not sure how the SSH client library is detecting when the command exits. If
it is waiting for the IO streams to close then this would explain the hang.