There's a danger of handle being removed while waiting for user to invoke callback, I'll add code handling it later.