code: func waitForCompletion(handle syscall.Handle, overlapped *syscall.Overlapped) (uint32, error) {
  	_, err := syscall.WaitForSingleObject(overlapped.HEvent, syscall.INFINITE)
  	if err != nil {
  		return 0, err
  	}
  	var transferred uint32
  	err = getOverlappedResult(handle, overlapped, &transferred, true)
  	return transferred, err
  }
docs: // waitForCompletion waits for an asynchronous I/O request referred to by overlapped to complete.
  // This function returns the number of bytes transferred by the operation and an error code if
  // applicable (nil otherwise).